更新時間:2023-06-02 來源:黑馬程序員 瀏覽量:
Python中的類變量和實例變量是兩種不同類型的變量,它們在作用域和訪問方式上有所不同。
類變量是定義在類中,但在方法之外的變量。它們被所有類的實例共享,并且可以通過類名或?qū)嵗齺碓L問。類變量通常用于存儲與該類的所有實例相關(guān)的共享數(shù)據(jù)。
實例變量是定義在方法中或構(gòu)造函數(shù)中的變量。每個實例都有自己的一組實例變量,并且它們與該實例的特定屬性相關(guān)聯(lián)。實例變量的值可以在每個實例中單獨設(shè)置和訪問。
下面是一個簡單的示例代碼來演示類變量和實例變量的區(qū)別:
class MyClass: class_var = 0 # 類變量 def __init__(self, instance_var): self.instance_var = instance_var # 實例變量 # 創(chuàng)建兩個實例 obj1 = MyClass(10) obj2 = MyClass(20) # 訪問類變量 print("Class variable:", MyClass.class_var) # 輸出: Class variable: 0 print("Class variable (via instance):", obj1.class_var) # 輸出: Class variable (via instance): 0 # 修改類變量 MyClass.class_var = 5 print("Modified class variable (via class):", MyClass.class_var) # 輸出: Modified class variable (via class): 5 print("Modified class variable (via instance):", obj2.class_var) # 輸出: Modified class variable (via instance): 5 # 訪問實例變量 print("Instance variable (obj1):", obj1.instance_var) # 輸出: Instance variable (obj1): 10 print("Instance variable (obj2):", obj2.instance_var) # 輸出: Instance variable (obj2): 20 # 修改實例變量 obj1.instance_var = 15 print("Modified instance variable (obj1):", obj1.instance_var) # 輸出: Modified instance variable (obj1): 15 print("Instance variable (obj2):", obj2.instance_var) # 輸出: Instance variable (obj2): 20
在上面的示例中,class_var是一個類變量,可以通過類名或?qū)嵗齺碓L問。instance_var是一個實例變量,每個實例都有自己的副本,并且只能通過實例來訪問。修改類變量的值會影響所有實例,但修改實例變量的值只會影響該實例本身。