То, на что я нацеливаюсь, имеет объект в python3, который ведет себя как обычно в отношении доступа к атрибуту, за исключением того, что если атрибут недоступен при обычном поиске он должен отображать/вычислять значение каким-либо другим способом.Есть ли хороший (r) способ иметь значения по умолчанию в объектах
Я знаю, что один мог решить эту проблему путем определения метода __getattr__
:
def __getattr__(self, key):
if key == 'foo':
return calculate_default_foo()
elif key == 'bar':
return getattr(dfltobj, 'bar')
elif key == 'frob':
return 42
raise AttributeError
но чувствует себя так python2, так что я интересно, если есть более элегантный способ сделать это в Python3. Просто определение property
s не так хорошо работает, поскольку они полностью перекрывают доступ к этому атрибуту, но в противном случае это был бы хороший подход, если бы он сработал.
Я думаю, вы поняли на вопрос немного. Цель состоит в том, что 'foo.attr2' должен давать значение по умолчанию (которое может потребоваться вычислять на лету). – skyking
Мой плохой! Кажется, я получил его сейчас. – mikelsr