Chúng ta đã biết rằng không có từ khóa static trong Python. Tất cả các biến được gán giá trị bên trong phần code khai báo class đều là các class variable – biến thuộc về lớp.

Chúng ta nên cẩn thận khi thay đổi giá trị của class variable. Nếu chúng ta cố gắng thay đổi class variable bằng cách sử dụng đối tượng, một instance variable mới (hay còn gọi là non-static variable) cho đối tượng cụ thể đó sẽ được tạo ra, và cái instance variable này sẽ “đè” lên các class variables. Dưới đây là đoạn chương trình Python mô tả việc này.

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------

# Class for Computer Science Student 
class CSStudent: 
    stream = 'cse'     # Class Variable  
    def __init__(self, name, roll): 
        self.name = name  
        self.roll = roll 
  
# Driver program to test the functionality 
# Creating objects of CSStudent class 
a = CSStudent("cafedevn", 1) 
b = CSStudent("Nerd", 2) 
  
print "Initially"
print "a.stream =", a.stream 
print "b.stream =", b.stream  
  
# This thing doesn't change class(static) variable 
# Instead creates instance variable for the object 
# 'a' that shadows class member. 
a.stream = "ece"
  
print "\nAfter changing a.stream"
print "a.stream =", a.stream 
print "b.stream =", b.stream 

Kết quả in ra là:

Initially
a.stream = cse
b.stream = cse

After changing a.stream
a.stream = ece
b.stream = cse

Chúng ta chỉ nên thay đổi class variable bằng cách sử dụng class name – tên lớp

Dưới đây là đoạn chương trình Python mô tả cách thay đổi class variable trong Python


# Program to show how to make changes to the 
# class variable in Python 
  
# Class for Computer Science Student 
class CSStudent: 
    stream = 'cse'     # Class Variable  
    def __init__(self, name, roll): 
        self.name = name  
        self.roll = roll 
  
# New object for further implementation 
a = CSStudent("check", 3) 
print "a.tream =", a.stream 
  
# Correct way to change the value of class variable 
CSStudent.stream = "mec"
print "\nClass variable changes to mec"
  
# New object for further implementation 
b = CSStudent("carter", 4) 
  
print "\nValue of variable steam for each object"
print "a.stream =", a.stream 
print "b.stream =", b.stream 

Kết quả in ra là:

a.tream = cse

Class variable changes to mec

Value of variable steam for each object
a.stream = mec
b.stream = mec

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!