提问者:小点点

Python getattr默认值计算


我有一个简单而可能愚蠢的问题。

getattr(obj, 'attribute', 2+2)

问题是--默认值2+2是只在'attribute'缺失的情况下才计算,还是在任何情况下都计算?

谢谢


共1个答案

匿名用户

您可以通过创建一个带有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