Một lớp (class) là bản thiết kế (blueprint) để tạo ra các đối tượng khác nhau. Khi các đối tượng được tạo ra từ lớp, chúng không còn phụ thuộc vào thuộc tính của lớp. Ngoài ra, lớp không có quyền kiểm soát các thuộc tính của các instance được tạo ra.
Trong ví dụ dưới đây, chúng ta thấy MainClass có một thuộc tính lớp (class attribute) và các đối tượng được tạo từ lớp chính có các giá trị thuộc tính riêng của chúng. Việc in các giá trị này cho chúng ta sự rõ ràng. Cuối cùng, lớp không thể truy cập các giá trị của thuộc tính instance.
Ví dụ
class MainClass(object):
class_attr = 'Sun'
def __init__(self, instance_attr):
self.instance_attr = instance_attr
if __name__ == '__main__':
obj1 = MainClass('Mon')
obj2 = MainClass('Tue')
# in thuộc tính instance
print(obj1.instance_attr)
print(obj2.instance_attr)
# in thuộc tính lớp dùng MainClass
print(MainClass.class_attr)
# in thuộc tính lớp dùng objects
print(obj1.class_attr)
print(obj2.class_attr)
# in instance attribute như class property sẽ lỗi
# print(MainClass.instance_attr)
Kết quả
Chạy mã trên cho kết quả sau:
Mon Tue Sun Sun Sun