簡體   English   中英

getter和setter方法中的python變量名稱如何與其構造函數中的名稱不同?

[英]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設置初始名稱,它不會直接分配給屬性。

  1. 構造函數接收值作為函數參數
  2. 構造函數將屬性first_name分配給
  3. 調用設置器def first_name
  4. 分配給屬性_first_name

請注意,構造函數中還有一個令人困惑的錯別字,應該是self.first_name = first_name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM