Как вернуть атрибут, если он не пустой, или вызвать метод для заполнения атрибута, если он пуст

Как уже говорилось, для платформы Windows не существует способа поставщика Microsoft / компилятора. Однако, очевидно, полезно поймать эти типы исключений в обычном try {} catch (исключение ex) {} для сообщения об ошибках и более изящном выходе вашего приложения (как говорит JaredPar, теперь приложение, вероятно, находится в беде) , Мы используем _se_translator_function в простой оболочке класса, которая позволяет нам улавливать следующие исключения в aa try-обработчике:

DECLARE_EXCEPTION_CLASS(datatype_misalignment)
DECLARE_EXCEPTION_CLASS(breakpoint)
DECLARE_EXCEPTION_CLASS(single_step)
DECLARE_EXCEPTION_CLASS(array_bounds_exceeded)
DECLARE_EXCEPTION_CLASS(flt_denormal_operand)
DECLARE_EXCEPTION_CLASS(flt_divide_by_zero)
DECLARE_EXCEPTION_CLASS(flt_inexact_result)
DECLARE_EXCEPTION_CLASS(flt_invalid_operation)
DECLARE_EXCEPTION_CLASS(flt_overflow)
DECLARE_EXCEPTION_CLASS(flt_stack_check)
DECLARE_EXCEPTION_CLASS(flt_underflow)
DECLARE_EXCEPTION_CLASS(int_divide_by_zero)
DECLARE_EXCEPTION_CLASS(int_overflow)
DECLARE_EXCEPTION_CLASS(priv_instruction)
DECLARE_EXCEPTION_CLASS(in_page_error)
DECLARE_EXCEPTION_CLASS(illegal_instruction)
DECLARE_EXCEPTION_CLASS(noncontinuable_exception)
DECLARE_EXCEPTION_CLASS(stack_overflow)
DECLARE_EXCEPTION_CLASS(invalid_disposition)
DECLARE_EXCEPTION_CLASS(guard_page)
DECLARE_EXCEPTION_CLASS(invalid_handle)
DECLARE_EXCEPTION_CLASS(microsoft_cpp)

Оригинальный класс исходил из этой очень полезной статьи:

http://www.codeproject.com/KB/cpp/exception.aspx

3
задан kysevenle 2 March 2019 в 01:15
поделиться

1 ответ

Вы можете кэшировать ответ API в атрибуте экземпляра, который инициализирован как None, так что метод свойства data будет получать данные только из API, если атрибут кэширования равен None:

class Thing:
    def __init__(self, id):
        self.id = id
        self._data = None

    @property
    def data(self):
        if self._data is None:
            self._data = self._get_data_from_api()
        return self._data

    def _get_data_from_api(self):
        return requests.get(url, headers).json()
0
ответ дан blhsing 2 March 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: