[英]How python variables name in getter and setter method are different to the name in its constructor?
我對python Cookbook中的屬性示例感到困惑。
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之間有什么關系? 這兩個不同的變量如何相互關聯?
self.first_name
/ people.first_name
是setter方法的屬性def first_name(self, value)
,而self._first_name
是持有該值的實際屬性。 構造函數使用setter設置初始名稱,它不會直接分配給屬性。
first_name
分配給 def first_name
, _first_name
請注意,構造函數中還有一個令人困惑的錯別字,應該是self.first_name = first_name
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.