gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:11:58 25 4
gpt4 key购买 nike

当我使用__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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com