Computer >> Máy Tính >  >> Lập trình >> Python

Thay đổi thành viên lớp trong Python?

Lập trình hướng đối tượng Python cho phép các biến được sử dụng ở cấp lớp hoặc cấp phiên bản trong đó các biến chỉ đơn giản là các ký hiệu biểu thị giá trị bạn đang sử dụng trong chương trình.

Ở cấp độ lớp, các biến được gọi là biến lớp trong khi các biến ở cấp cá thể được gọi là biến cá thể. Hãy hiểu biến lớp và biến phiên bản thông qua một ví dụ đơn giản -

# 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)

Trong chương trình trên, chúng ta đã tạo một lớp Shark và sau đó chúng ta đang cố gắng thay đổi biến lớp bằng cách sử dụng đối tượng, điều này sẽ tạo ra một biến thể hiện mới cho đối tượng cụ thể đó và biến này sẽ tạo bóng cho biến lớp.

đầu ra

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

Hãy sửa đổi chương trình trên của chúng tôi để có được kết quả chính xác -

# 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)

Kết quả

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