1. Các thuộc tính của Lớp

Các thuộc tính của lớp (class attributes) thuộc về chính bản thân của lớp, và chúng sẽ được chia sẻ cho tất cả các thể hiện (đối tượng) của lớp này. Những thuộc tính như vậy được định nghĩa trong phần thân của lớp và thường nằm ở phía trên cùng, để dễ đọc, dễ theo dõi.

Ví dụ về các thuộc tính của lớp:

# -----------------------------------------------------------
#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
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# Write Python code here 
class sampleclass: 
    count = 0     # class attribute 
  
    def increase(self): 
        sampleclass.count += 1
  
# Calling increase() on an object 
s1 = sampleclass() 
s1.increase()         
print(s1.count) 
  
# Calling increase on one more 
# object 
s2 = sampleclass() 
s2.increase() 
print(s2.count) 
  
print(sampleclass.count) 

Kết quả in ra là:

1              
2                           
2

2. Các thuộc tính của thể hiện

Không giống như các thuộc tính của lớp, các thuộc tính của thể hiện không được chia sẻ cho các đối tượng. Mỗi đối tượng sẽ sở hữu một bản sao các thuộc tính của thể hiện (còn trong trường hợp các thuộc tính của lớp thì tất cả các đối tượng đều tham chiếu đến một bản sao duy nhất).

Để liệt kê các thuộc tính của một thể hiện/đối tượng, chúng ta có hai hàm:

– vars(): Hàm này sẽ hiển thị các thuộc tính của một thể hiện dưới dạng một dictionary (kiểu mảng gồm các phần từ là một cặp key-value).

– dir(): Hàm này sẽ hiển thị nhiều thuộc tính hơn so với hàm vars(), bởi vì nó không bị giới hạn trong phạm vi của instance – thể hiện của lớp. Hàm này sẽ hiển thị các thuộc tính của lớp, ngoài ra, nó cũng hiển thị cả các thuộc tính của các lớp cha mà lớp hiện tại đang kề thừa.

Đoạn chương trình Python dưới đây sẽ mô tả ví dụ về các thuộc tính của thể hiện:


# Python program to demonstrate 
# instance attributes. 
class emp: 
    def __init__(self): 
        self.name = 'xyz'
        self.salary = 4000
  
    def show(self): 
        print(self.name) 
        print(self.salary) 
  
e1 = emp() 
print("Dictionary form :", vars(e1)) 
print(dir(e1)) 

Kết quả in ra là:

Dictionary form :{'salary': 4000, 'name': 'xyz'}
['__doc__', '__init__', '__module__', 'name', 'salary', 'show']

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!