首頁  >  文章  >  後端開發  >  變數作用域在 Python 類別中如何運作?

變數作用域在 Python 類別中如何運作?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 21:58:01830瀏覽

How Do Variable Scopes Work in Python Classes?

理解 Python 類別中的變數作用域

在 Python 類別中宣告變數一開始可能會令人困惑。本文旨在闡明與類別上下文中變數聲明相關的不同作用域和細微差別。

一般作用域規則:

  • 類別變數: 在類別的外部函數中聲明,這些變數可供所有類別函數訪問。
  • 局部變數: 在類別的內部函數中聲明,這些變數只能在該函數內存取。
  • 實例變數:在類別中的函數內部使用 self.(變數名稱)聲明,這些變數可供所有類別函數存取。

實例變數與全域變數:

實例變數(使用self.(變數名稱)宣告)的行為與全域變數(在任何函數或類別外部聲明)不同。雖然類別中聲明的所有內容在技術上都是公共的,但實例變數綁定到單一物件實例。

範例:

class Test:
    a = None  # Class variable
    b = None  # Class variable

    def __init__(self, a):
        self.a = a  # Instance variable

在此範例中,類別變數a 和 b 可供所有類別函數存取。然而,實例變數 self.a 是特定於每個物件實例的。在 __init__ 中設定 self.a 不會影響類別變數 a。

受保護的變數:

雖然 Python 沒有明確定義私有或受保護的變量,但以下劃線 (_) 被視為受保護。從技術上講,它們仍​​然可以在類別外訪問,但修改它們的名稱會阻止訪問。

私有變數:

以雙底線 (__) 為前綴的變數被視為私有。它們的名稱被破壞,使得很難在類別外部直接存取它們。

其他細微差別:

  • 在本地函數內但在 self 之外分配的變數。 (變數名)在該函數之外不可用。
  • Mangle-proof protected 和 private 變數在類別之外並非完全不可訪問,但不應依賴真正的封裝。

以上是變數作用域在 Python 類別中如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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