Python:通过decorator访问类属性集

Python:通过decorator访问类属性集,python,Python,我正在尝试编写一个Python装饰器,它将在实例属性中存储函数运行所需的时间 代码: 当我运行f()方法时,我可以立即看到_func_times dict具有decorator设置的值 >>> f = Foo() >>> f.f1() f1 sleeping 1 sec >>> f.__func_times {'f1': 1.0000121593475342} 但是当我运行f1_times()方法时,它会将字典视为空的,并且不会返回任何内容

我正在尝试编写一个Python装饰器,它将在实例属性中存储函数运行所需的时间

代码:

当我运行f()方法时,我可以立即看到_func_times dict具有decorator设置的值

>>> f = Foo()
>>> f.f1()
f1 sleeping 1 sec
>>> f.__func_times
{'f1': 1.0000121593475342}
但是当我运行f1_times()方法时,它会将字典视为空的,并且不会返回任何内容

>>> print f.f1_time()
inside _last_func_time: None
__func_times: {}
None
>>>

出了什么问题?

您使用了双前导下划线名称。你可能被告知这些表示私有变量。这并不完全正确,但是,为什么您要尝试从decorator访问私有变量,decorator是在类外部定义的,不应该访问类的私有变量?更改为单下划线修复了这一问题。非常感谢。我只是使用双下划线来尝试避免任何其他可能使用该变量名的类。您使用的是双前导下划线名。你可能被告知这些表示私有变量。这并不完全正确,但是,为什么您要尝试从decorator访问私有变量,decorator是在类外部定义的,不应该访问类的私有变量?更改为单下划线修复了这一问题。非常感谢。我只使用了双下划线来尝试避免任何其他可能使用该变量名的类。
>>> print f.f1_time()
inside _last_func_time: None
__func_times: {}
None
>>>