我试图找出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
值?
答案 0 :(得分:1)
当self._method(param)
为_method
时,您误解了property
实际执行的操作。由于您正在处理属性,因此将检索当前存储在属性中的值。
tmp = self._method
然后将该值称为函数。
tmp(param)
因此,无法在param
的getter中检索_method
的值,因为解释器甚至没有达到param
甚至无关紧要的程度。