【发布时间】:2015-03-24 23:18:34
【问题描述】:
我试图弄清楚如何在每次调用对象后更改一些值。 我认为 call() 函数在每次调用后执行。
这应该是一个简单的计数器类,在被调用后会减少 value 属性。
class counter():
def __init__(self,value):
self.value = value
def __call__(self):
self.value -= 1
count = counter(50)
print count.value
print count.value
>> 50
>> 50 <-- this should be 49
我做错了什么?
【问题讨论】:
-
__call__在您将实例作为函数调用时被调用。即在执行count()之后,count.value将是 49。您可能正在寻找__getattribute__ -
@Matt:我尝试使用 getattribute 但还是一样。你能帮助我吗?谢谢
-
你想让count.value每次被访问时减1吗?
-
@Matt 是的,我正是想要那个。
-
它需要是一个类还是你只需要一个计数器?
标签: python class attributes call