Как отловить ошибку при работе в class?

Здравствуйте.

Вопрос, как при работе в классе, отловить с помощью магических методов (def __method__ ), ошибку, что переменная не определена?

Мне нужно, чтобы при обращении в какой либо функции в моем классе к переменной (определенной в self-класса), она автоматически создавалась, если ее не существует и после ее создания функция продолжит выполнятся или остановится?
  • Вопрос задан
  • 216 просмотров
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Ну можно и так например:
>>> class SomeClass:
...   pass
...
>>> cls = SomeClass()
>>> print cls.some_var
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'some_var'
>>> print hasattr(cls, 'some_var')
False
>>> if not hasattr(cls, 'some_var'):
...   cls.some_var = 1
...
>>> print cls.some_var
1
>>> print hasattr(cls, 'some_var')
True
>>>

встроенной функцией hasattr - вы проверяете есть ли свойство у объекта класса. Встроенной функцией callable вы дополнительно можете убедиться что это именно переменная:
>>> callable(getattr(cls, 'some_var'))
False

Выполнение функции не прерывается.
Ответ написан
Комментировать
ptitca_zu
@ptitca_zu
Programmer. Reader. Introvert
Вам нужно переопределить метод __getattr__() в классе.
Например, вот так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы