在 Python 中修改類成員?


Python 面向物件程式設計允許在類級別或例項級別使用變數,其中變數只表示你在程式中使用的表示值的符號。 

在類級別,變數稱為類變數,而在例項級別,變數稱為例項變數。讓我們透過一個簡單的示例來理解類變數和例項變數 −

# Class Shark
class Shark:
animal_type= 'fish' # Class Variable
def __init__(self, name, age):
self.name = name
self.age = age

# Creating objects of Shark class
obj1 = Shark("Jeeva", 54)
obj2 = Shark("Roli", 45)

print ("Printing class variable using two instances")
print ("obj1.animal_type =", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

#Let's change the class variable using instance variable
obj1.animal_type = "BigFish"

print ("\nPrinting class variable after making changes to one instance")
print ("obj1.animal_type=", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

在上面的程式中,我們建立了一個 Shark 類,然後我們嘗試使用物件更改類變數,這將為該特定物件建立一個新的例項變數,並且此變數會隱藏類變數。

輸出

Printing class variable using two instances
obj1.animal_type = fish
obj2.animal_type = fish

Printing class variable after making changes to one instance
obj1.animal_type= BigFish
obj2.animal_type = fish

讓我們修改我們的上述程式以獲得正確的輸出 −

# Class Shark
class Shark:
animal_type= 'fish' # Class Variable
def __init__(self, name, age):
self.name = name
self.age = age

# Creating objects of Shark class
obj1 = Shark("Jeeva", 54)
obj2 = Shark("Roli", 45)

print ("Printing class variable using two instances")
print ("obj1.animal_type =", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

#Let's change the class variable using instance variable
#obj1.animal_type = "BigFish"

Shark.animal_type = "BigFish"
print("New class variable value is %s, changed through class itself" %(Shark.animal_type))

print ("\nPrinting class variable after making changes through instances")
print ("obj1.animal_type=", obj1.animal_type)
print ("obj2.animal_type =", obj2.animal_type)

結果

Printing class variable using two instances
obj1.animal_type = fish
obj2.animal_type = fish
New class variable value is BigFish, changed through class itself

Printing class variable after making changes through instances
obj1.animal_type= BigFish
obj2.animal_type = BigFish

更新日期:2019 年 7 月 30 日

513 次瀏覽

開啟您的 職業生涯

完成課程以獲取認證

開始
廣告