0
我的目标是在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