python - 访问属性时打印一些内容

标签 python getattribute

当我使用__getattribute__访问类的属性时,我尝试打印一些内容 这里的大问题是递归和我重写 getattribute 方法的事实。

恐怕我必须使用元类来解决这个问题。 不管怎样,如果你对这个问题有任何答案。

最佳答案

__getattribute__ 用于实例上的所有属性访问。这包括该方法中的 self.recursion 。

很少需要使用__getattribute__。如果您确实有适当的用例,请避免属性访问或使用 super(A, self).__getattribute__() 以避免无限递归问题。

对于您的用例(每当访问属性时打印一些内容),请仍然使用 super() 返回原始属性:

class A(object):
    def meth(self):
        return "met"

    def __getattribute__(self, name):
        print "IN CLASS A"
        return super(A, self).__getattribute__(name)

请注意,要使 super() 工作,您确实需要使用继承自 object 的新型类。如果您从其他东西继承,并且其他东西具有 __getattribute__ 方法,那么它已经是一个新式类。

关于python - 访问属性时打印一些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24039036/

相关文章:

python - gevent 和 SSL 导致 "EOF occurred in violation of protocol"

python - 替换列表内的值

python - 如何为降序值编写排序键函数?

java - 如何通过Selenium和Java根据html提取 'src'属性

python - 在 Python 中使用 __getattribute__ 或 __getattr__ 调用方法

python - 使用 Flask Web 应用程序监控实时数据流

Python Canvas 不绘制多条线

java - 如果我通过 Selenium Webdriver 和 Java 知道相应的文本,如何提取 DOM 元素的 ID 属性

javascript - getAttribute 的初学者 Javascript 错误