"属性"在Python工作?

时间:2014-07-02 21:59:30

标签: python

我试图找出property装饰器在Python中是如何工作的。

所以,

 class Foo:

 def method(self,param):
    self._method(param)

 @property
 def _method(self): # works fine.. why... I havent defined this to accept any argument
    #some logic
    #even though it passes.. how do i retrieve "param" parameter passed above?

VS:

 class Foo:

 def method(self,param):
    self._method(param)

 # no property decorator here (throws error)
 def _method(self):
    #some logic

如果删除了装饰器property,Python会抛出一个错误,这很好,因为我传递的方法中没有接受该参数。我理解这一点,但为什么_method(self)不需要定义property的更多参数?

如何使用装饰器方法检索param内的method值?

1 个答案:

答案 0 :(得分:1)

self._method(param)_method时,您误解了property实际执行的操作。由于您正在处理属性,因此将检索当前存储在属性中的值。

tmp = self._method

然后将该值称为函数。

tmp(param)

因此,无法在param的getter中检索_method的值,因为解释器甚至没有达到param甚至无关紧要的程度。