AdSense

網頁

2025/6/5

Python 類別變數與實例變數 class variable and instance variable

Python的類別中可以定義類別變數(class variable)和實例變數(instance variable);類別變數的值是跨實例的,而實例變數的值則屬於實例。


下面類別C中定義了兩個類別變數vc,以及實際變數v,觀察執行結果。

類別變數可以類別名稱.變數名稱來存取,例如C.vC.c;也可以實例變數.變數名稱來存取,例如c1.cc2.c

若類別變數和實例變數名稱相同,則以實例變數.變數名稱會取得實例變數的值,例如c1.vc2.v

使用實例變數.變數名稱 = 值設定值時,即使變數名稱為類別變數且無同名的實例變數,實際上是把值設定到新增的實例變數,例如c2.c = 6

class C:
    v = 1 # 類別變數
    c = 3 # 類別變數
    
    def __init__(self, v):
        self.v = v # 實例變數

# 建立類別C的c1實例變數
c1 = C(2)

# 取得C類別的類別變數v
print(C.v) # 1

# 取得c1實例的實例變數v
print(c1.v) # 2

# 取得c1實例的類別的類別變數c
print(c1.c) # 3

# 建立類別C的c2實例變數
c2 = C(4)

# 取得c2實例的實例變數v
print(c2.v) # 4

# 設定C類別的類別變數c
C.c = 5

# 取得c1實例的類別變數c
print(c1.c) # 5

# 新增/設定c2實例的實例變數c
c2.c = 6 

# 取得c2實例的實例變數c
print(c2.c) # 6

# 取得C類別的類別變數c
print(C.c) # 5

# 取得c1實例的類別變數c
print(c1.c) # 5


沒有留言:

AdSense