首頁  >  文章  >  後端開發  >  Python 中的實例屬性與類別屬性有什麼不同?

Python 中的實例屬性與類別屬性有什麼不同?

DDD
DDD原創
2024-10-27 06:40:29384瀏覽

  What's the Difference: Instance vs. Class Attributes in Python?

類別中__init__() 內部和外部變數定義的影響

在Python 中,建構子__init__() 中宣告的類別變數表現出與外部定義的行為相比不同的行為。在 __init__() 內部宣告的變數是實例屬性,而在外部定義的變數是類別屬性。

實例屬性(在__init__() 內用'self' 定義)

變數__init__() 中以self 開頭的內容與特定的物件實例相關聯。每個實例都有自己的這些變數的副本。因此,在一個實例中對這些變數進行的變更不會影響其他實例。

範例:

<code class="python">class WithClass:
    def __init__(self):
        self.value = "Bob"

    def my_func(self):
        print(self.value)</code>

這裡,value 是實例屬性。 WithClass 的每個實例都有自己的值。

類別屬性(在 __init__ 外部定義)

在 __init__() 外部定義的變數是類別屬性。這些變數在類別的所有實例之間共用。在一個實例中對它們所做的任何更改都會反映在所有其他實例中。

範例:

<code class="python">class WithoutClass:
    value = "Bob"

    def my_func(self):
        print(self.value)</code>

在這種情況下,值是一個類別屬性。 WithoutClass 的所有實例都將引用相同的值變數。

變數定義的後果

在__init__() 內部或外部定義變數的選擇取決於所需的功能:

  • 實例屬性:當您希望每個實例都有自己唯一的變數版本時使用。
  • 類別屬性:當變數值應該在類別的所有實例之間共用時使用。

這些屬性使用不當可能會導致意外的行為或錯誤。例如,當屬性應該是類別屬性時將其定義為實例屬性可能會無意中建立該變數的多個副本,從而導致效能問題或資料不一致。

以上是Python 中的實例屬性與類別屬性有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn