python - 打印在 __getattr__ 中不起作用

标签 python python-2.7 python-3.x

我有这门课:

class Meta:
    def __getattr__(self, atr):
        print('get', atr)
    def __setattr__(self, atr, atr_value):
        print('{0} with value {1} added'.format(atr, atr_value))
        self.__dict__[atr] = atr_value

当我设置一个属性时 - print 有效:

>>> x.a = 1
a with value 1 added

但是当我调用它时:

>>> x.a
1

返回的值没有print 输出。

非常感谢您的帮助。

最佳答案

__getattr__ 仅在属性不存在时调用。您想覆盖 __gettattribute__

def __getattribute__(self, name):
    print("get", name)
    return object.__getattribute__(self, name)

关于python - 打印在 __getattr__ 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30874966/

相关文章:

python - SharePoint Online 中的远程身份验证

python - 将属性注入(inject) QML 组件

python - 为什么 pandas 在 `apply` 中对这两个字符串的处理方式不同?

python - ViewSet类变量

python - 根据类别乘以列

python - 如何在不使用 Selenium 的情况下抓取 WHO 流感数据?

python - 将每个实例属性的 __str__ 用于类的 __str__

python - 将文本文件附加到word文档中Python-docx

python - 正确设计 Multiprocessing.Manager 自定义对象

python - 如何从项目中获取用户故事 - Pyral