【发布时间】:2016-03-05 16:23:54
【问题描述】:
我对 python 食谱中的一个属性示例感到困惑。
class Person:
def __init__(self, first_name):
self.first_name = first_name
@property
def first_name(self):
return self._first_name
@first_name.setter
def first_name(self, value):
self._first_name = value
>>>people = Person('Tom')
>>>people.first_name
'Tom'
>>>people.first_name = 'Jack'
>>>people.first_name
'Jack'
当一个实例被创建时,一个参数分配给 self.first_name。但是,当调用 getter 属性时,它将返回 self._first_name 的值,因为 self.first_name 与 self._first_name 不同。 self.first_name 和 self._first_name 之间有什么关系?这两个不同的变量如何相互关联?
【问题讨论】:
-
first_name是一个属性,_first_name是一个属性。 -
代码看起来无效。
self.first_name = name、name是未定义的,但即使是self.first_name = first_name,它也会替换属性定义。 -
>>> people._first_name无效。 -
@Peter 怎么“无效”,用在哪里?
-
_first_name从未设置。
标签: python properties