我有一个简单而可能愚蠢的问题。
getattr(obj, 'attribute', 2+2)
问题是--默认值2+2
是只在'attribute'缺失的情况下才计算,还是在任何情况下都计算?
谢谢
您可以通过创建一个带有add函数的对象来测试它,该函数让您知道它被调用了。 例如,在麻烦的情况下,您可以看到函数打印“called”,表明无论对象上是否存在属性,都要计算添加:
class obj:
a = "value from obj"
class N:
def __add__(self, other):
print('called')
return 5
a = N()
b = N()
getattr(obj, 'a', a + b)
# called
#'value from obj'
getattr(obj, 'z', a + b)
# called
# 5