理解 Python 類別中的變數作用域
在 Python 類別中宣告變數一開始可能會令人困惑。本文旨在闡明與類別上下文中變數聲明相關的不同作用域和細微差別。
一般作用域規則:
實例變數與全域變數:
實例變數(使用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 沒有明確定義私有或受保護的變量,但以下劃線 (_) 被視為受保護。從技術上講,它們仍然可以在類別外訪問,但修改它們的名稱會阻止訪問。
私有變數:
以雙底線 (__) 為前綴的變數被視為私有。它們的名稱被破壞,使得很難在類別外部直接存取它們。
其他細微差別:
以上是變數作用域在 Python 類別中如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!