Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเปลี่ยนสมาชิกคลาสใน 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