理解Python 中的類別和實例變數
物件導向程式設計中的關鍵概念之一是類別變數和實例變數之間的區別。在 Python 中,這些變數在管理類別內的資料方面發揮著至關重要的作用。然而,根據它們的定義方式,它們的行為可能會產生混淆。
類別變數與實例變數
示例1:類變量
<code class="python">class testClass(): list = [] def __init__(self): self.list.append('thing')</code>
在此示例中,列表 變量是類變量,因為它是在任何方法之外定義的。因此,當建立該類別的新實例時,它會存取相同的 list 變數及其內容。因此,兩個實例(p 和f)的輸出為:
['thing'] ['thing', 'thing']
範例2:實例變數
<code class="python">class testClass(): def __init__(self): self.list = [] self.list.append('thing')</code>
在此範例中,list 變數是在__init__() 方法中使用self 定義的。因此,它成為一個實例變數。每個實例都有自己單獨的 list 變數。因此,每個實例的輸出為:
['thing'] ['thing']
類別和實例變數的命名解析
理解類別和實例變數行為的關鍵在於Python 如何解析名稱。當您存取 self.list 時,Python 首先檢查實例本身是否存在 list 屬性。如果找不到,則檢查類別定義。
這解釋了為什麼在第一個範例中,list 被視為類別變量,而在第二個範例中,它成為實例變數。
總之,變數定義在類別或方法中的位置決定了它們是類別變數還是實例變數。理解這種差異對於在物件導向的 Python 程式碼中有效管理資料至關重要。
以上是Python 中的類別變數和實例變數有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!