我最近了解了 @property 装饰器,但(至少)有一件事我还不明白。在下面的这个类中,my_name 显然是属性名称,但根本不清楚该值实际上是如何分配的。唯一的赋值是下划线的 _my_name 变量,但是装饰器如何知道 self._my_name 对应于 my_name 属性?
class Person:
def __init__(self, input_name):
self._my_name = input_name
@property
def my_name(self):
return self._my_name
@my_name.setter
def my_name(self, value):
self._my_name = value
最佳答案
尝试这样看,装饰器对类的内部结构一无所知,例如:self._my_name
。它所知道的就是检索或设置值时要调用的函数。
p = Person('bob')
name = p.my_name ## the 'getter' function is called: ultimately p.my_name(self)
p.my_name = 'alice' ## the 'setter' function is called: ultimately p.my_name(self, 'alice')
这里,在幕后,还有更多的事情发生。看看类似的问题:How does the @property decorator work? 最上面的答案很好地解释了@property是什么以及它的作用。
关于python - 无法理解 @property 如何知道哪个变量是属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59979613/