Python getattr 默认值评估

标签 python

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

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

问题是 - 默认 2 + 2仅在缺少“属性”的情况下才进行评估,还是在任何情况下都会对其进行评估?

谢谢

最佳答案

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

关于Python getattr 默认值评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62956646/

相关文章:

python - 如何从python中的列表中删除重复的条目

python - 优化问题的神经网络

Python:如果在没有命名空间的情况下添加新元素,则 xpath.find() 将找不到新元素

python - 比较特定列的 70% 的行

python - 如何通过相邻值进行字典查找

python - 使用 Python 和 Beautiful Soup 进行多页网页抓取

python - 在 Python 中使用大小

python - Cerberus - 仅当满足依赖性时才需要字段

python - 我可以在 Python 中使用 "static"变量的匿名函数吗?

python - PermissionRequiredMixin AccessMixinpermission_denied_message