Python語言中,變量除了可以定義在函數內部和全局變量外,還可以定義在類中,即成員變量。
class Person: name = '張三' age = 18
上述代碼中,我們定義了一個Person類,其中name和age為類的成員變量。這些成員變量可以通過類名直接訪問,也可以通過實例對象進行訪問。
p = Person() print(p.name) # 輸出 '張三' print(Person.age) # 輸出 18
但是需要注意的是,成員變量可以被所有實例對象共享,也就是說,一個對象對成員變量的修改會影響到其他對象。
p1 = Person() p2 = Person() print(p1.age) # 輸出 18 print(p2.age) # 輸出 18 p1.age = 20 print(p1.age) # 輸出 20 print(p2.age) # 輸出 20
上述代碼中,我們分別創建了兩個Person實例對象p1和p2,它們的age成員變量都是18。但是當我們修改p1的age成員變量為20后,p2的age成員變量也成了20。這是因為p1和p2共享了Person類的成員變量。
如果我們想要讓每個實例對象擁有自己的成員變量,可以通過構造函數來實現:
class Person: def __init__(self, name, age): self.name = name self.age = age
構造函數會在實例對象創建時被調用,傳入的參數會被賦值給構造函數中定義的成員變量。
p1 = Person('張三', 18) p2 = Person('李四', 20) print(p1.age) # 輸出 18 print(p2.age) # 輸出 20 p1.age = 21 print(p1.age) # 輸出 21 print(p2.age) # 輸出 20
上述代碼中,我們創建了兩個Person實例對象p1和p2,并分別傳入不同的參數。每個實例對象擁有自己的成員變量,因此當我們修改p1的age成員變量為21后,p2的age成員變量并未受到影響。
最后需要注意的是,類的成員變量是公有的,可以被任何地方訪問和修改。因此在實際開發中,需要注意成員變量的命名和使用,避免出現不必要的問題。