首頁(yè)常見(jiàn)問(wèn)題正文

Python類變量和實(shí)例變量的區(qū)別是什么?

更新時(shí)間:2023-06-02 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  Python中的類變量和實(shí)例變量是兩種不同類型的變量,它們?cè)谧饔糜蚝驮L問(wèn)方式上有所不同。

  類變量是定義在類中,但在方法之外的變量。它們被所有類的實(shí)例共享,并且可以通過(guò)類名或?qū)嵗齺?lái)訪問(wèn)。類變量通常用于存儲(chǔ)與該類的所有實(shí)例相關(guān)的共享數(shù)據(jù)。

  實(shí)例變量是定義在方法中或構(gòu)造函數(shù)中的變量。每個(gè)實(shí)例都有自己的一組實(shí)例變量,并且它們與該實(shí)例的特定屬性相關(guān)聯(lián)。實(shí)例變量的值可以在每個(gè)實(shí)例中單獨(dú)設(shè)置和訪問(wèn)。

1685672095826_Python實(shí)例變量與類變量的區(qū)別.jpg

  下面是一個(gè)簡(jiǎn)單的示例代碼來(lái)演示類變量和實(shí)例變量的區(qū)別:

class MyClass:
    class_var = 0  # 類變量

    def __init__(self, instance_var):
        self.instance_var = instance_var  # 實(shí)例變量

# 創(chuàng)建兩個(gè)實(shí)例
obj1 = MyClass(10)
obj2 = MyClass(20)

# 訪問(wèn)類變量
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

# 訪問(wèn)實(shí)例變量
print("Instance variable (obj1):", obj1.instance_var)  # 輸出: Instance variable (obj1): 10
print("Instance variable (obj2):", obj2.instance_var)  # 輸出: Instance variable (obj2): 20

# 修改實(shí)例變量
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是一個(gè)類變量,可以通過(guò)類名或?qū)嵗齺?lái)訪問(wèn)。instance_var是一個(gè)實(shí)例變量,每個(gè)實(shí)例都有自己的副本,并且只能通過(guò)實(shí)例來(lái)訪問(wèn)。修改類變量的值會(huì)影響所有實(shí)例,但修改實(shí)例變量的值只會(huì)影響該實(shí)例本身。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!