PHP
Python

Trang chủ

Tổng hợp thông tin về Class Attributes trong Python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
10/03/2025
11 phút đọc
Theo dõi Vietnix trên

Tổng hợp thông tin về Class Attributes trong Python

Class attributes là những thuộc tính chung của một lớp, có thể được truy cập và chia sẻ giữa tất cả các instance (đối tượng) của lớp đó. Khác với instance attributes chỉ thuộc về từng đối tượng riêng lẻ, class attributes giúp quản lý dữ liệu dùng chung một cách hiệu quả. Trong bài viết này, mình sẽ hướng dẫn bạn cách khai báo, truy cập và thay đổi class attributes. Đồng thời, bạn cũng sẽ hiểu rõ sự khác biệt giữa class attributes và instance attributes, cũng như những ứng dụng quan trọng của chúng trong lập trình Python.

Điểm chính cần nắm

  • Class Attributes trong Python là gì?: Là các thuộc tính chung của lớp, được chia sẻ giữa tất cả các instance.
  • Cách truy cập class attributes trong Python: Dùng tên lớp (ClassName.attribute_name) hoặc thông qua một instance (instance.attribute_name).
  • Thay đổi Class Attributes trong Python: Có thể thay đổi từ lớp, nhưng nếu thay đổi từ instance, Python sẽ tạo một instance attribute mới.
  • Vai trò của Class Attributes: Lưu trữ dữ liệu chung cho tất cả các instance, giúp tiết kiệm bộ nhớ và đảm bảo tính nhất quán.
  • Các Class Attributes có sẵn trong Python: Bao gồm __dict__, __doc__, __name__, __module__, __bases__, cung cấp thông tin về lớp.
  • Truy cập các Class Attributes có sẵn trong Python: Dùng ClassName.attribute_name để lấy giá trị hoặc getattr(ClassName, "attribute_name").
  • Instance Attributes trong Python: Là thuộc tính riêng của từng instance, chỉ ảnh hưởng đến instance đó.
  • So sánh Instance Attributes và Class Attributes: Class attributes được chia sẻ giữa các instance, còn instance attributes chỉ thuộc về từng đối tượng cụ thể.
  • Vietnix – Giải pháp lưu trữ tốc độ cao, bảo mật vượt trội: Cung cấp dịch vụ server, hosting, VPS với hiệu suất cao và bảo mật mạnh mẽ.

Class Attributes trong Python là gì?

Class attributes là những biến thuộc về lớp, không phải riêng từng instance (đối tượng) của lớp. Giá trị của class attribute được chia sẻ giữa tất cả các instance và giữ nguyên cho mọi đối tượng trừ khi được thay đổi.

Class attributes được khai báo bên trong lớp nhưng ngoài mọi phương thức. Chúng không thể được khởi tạo trong phương thức __init__(), vì __init__() chỉ dùng để thiết lập instance attributes (thuộc tính riêng của từng đối tượng).

Để truy cập class attribute, ta có thể sử dụng tên lớp hoặc thông qua một instance của lớp. Nói cách khác, class attributes có thể được truy cập bởi cả lớp và các đối tượng của nó.

Class attributes là những biến thuộc về lớp, không phải riêng từng instance
Class attributes là những biến thuộc về lớp, không phải riêng từng instance

Cách truy cập class attributes trong Python

Trong Python, class attributes có thể được truy cập bằng tên đối tượng (instance) kèm dấu chấm (.) theo sau là tên thuộc tính.

Ví dụ: Đoạn mã sau minh họa cách truy cập class attributes trong lớp Server của Vietnix.

class Server:
    provider = "Vietnix"  # Class Attribute
    location = "Vietnam"  # Class Attribute

# Tạo một instance của lớp Server
sv = Server()

# Truy cập class attributes thông qua instance
print("Nhà cung cấp:", sv.provider)
print("Vị trí máy chủ:", sv.location)

Kết quả:

Nhà cung cấp: Vietnix
Vị trí máy chủ: Vietnam

Trong ví dụ trên, cả hai class attributes providerlocation đều được truy cập từ instance sv. Vì là class attributes, chúng giữ nguyên giá trị và có thể truy cập từ bất kỳ instance nào của lớp Server.

Thay đổi Class Attributes trong Python

Để thay đổi giá trị của một class attribute, bạn chỉ cần gán giá trị mới cho nó bằng cách sử dụng tên lớp kèm dấu chấm (.) và tên thuộc tính.

Ví dụ: Dưới đây là ví dụ về cách cập nhật class attribute server_count trong lớp Server của Vietnix.

Trong ví dụ dưới đây, mình khởi tạo một class attribute có tên server_count trong lớp Server. Mỗi khi một instance (máy chủ) mới được tạo, phương thức __init__() sẽ tự động được gọi. Phương thức này không chỉ khởi tạo các instance attributes (thuộc tính của từng máy chủ) mà còn tăng giá trị server_count lên 1, thể hiện tổng số máy chủ của Vietnix.

class Server:
    # Class attribute  
    server_count = 0  
    
    def __init__(self, name, location):
        self.name = name  
        self.location = location  
        # Thay đổi class attribute
        Server.server_count += 1  
        print("Máy chủ:", self.name, "- Vị trí:", self.location)  
        # Truy cập class attribute  
        print("Tổng số máy chủ:", Server.server_count)  

# Tạo các instance của lớp Server  
sv1 = Server("Vietnix Server 1", "Hà Nội")  
print()  
sv2 = Server("Vietnix Server 2", "TP.HCM")  

Kết quả:

Mỗi khi một instance mới được tạo, giá trị của server_count tăng lên 1, cho thấy số lượng máy chủ của Vietnix đã được cập nhật.

Máy chủ: Vietnix Server 1 – Vị trí: Hà Nội
Tổng số máy chủ: 1

Máy chủ: Vietnix Server 2 – Vị trí: TP.HCM
Tổng số máy chủ: 2

Vai trò của Class Attributes

Class attributes đóng vai trò quan trọng trong Python vì những lý do sau:

  • Định nghĩa các thuộc tính có giá trị chung cho mọi instance của lớp.
  • Được sử dụng để thiết lập giá trị mặc định cho các đối tượng.
  • Hữu ích trong việc tạo singleton, giúp đảm bảo một đối tượng chỉ được khởi tạo một lần duy nhất và có thể được sử dụng ở nhiều phần khác nhau trong code.

Các Class Attributes có sẵn trong Python

Mọi lớp trong Python đều có một số thuộc tính có sẵn (built-in class attributes), có thể được truy cập bằng dấu chấm (.) như các thuộc tính thông thường:

  • __dict__: Từ điển chứa namespace của lớp.
  • __doc__: Chuỗi tài liệu của lớp (nếu không có, giá trị là None).
  • __name__: Tên của lớp.
  • __module__: Tên module chứa lớp (trong chế độ tương tác, giá trị là "__main__").
  • __bases__: Tuple chứa các lớp cha của lớp hiện tại, theo thứ tự được khai báo.

Truy cập các Class Attributes có sẵn trong Python

Để truy cập các thuộc tính tích hợp sẵn của lớp trong Python, chúng ta sử dụng tên lớp theo sau bởi dấu chấm (.) và sau đó tên thuộc tính.

Ví dụ: Trong đoạn code dưới đây, Vietnix sử dụng lớp Employee để truy cập tất cả các thuộc tính có sẵn.

class Employee:
   def __init__(self, name="Nguyễn Văn A", age=30):
      self.name = name
      self.age = age
   def displayEmployee(self):
      print("Tên:", self.name, ", Tuổi:", self.age)

print("Employee.__doc__:", Employee.__doc__)      # Tài liệu của lớp
print("Employee.__name__:", Employee.__name__)    # Tên lớp
print("Employee.__module__:", Employee.__module__) # Tên module chứa lớp
print("Employee.__bases__:", Employee.__bases__)  # Lớp cha của Employee
print("Employee.__dict__:", Employee.__dict__)    # Namespace của lớp

Kết quả: Nó sẽ tạo ra kết quả như bên dưới.

Employee.__doc__: None
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: (<class ‘object’>,)
Employee.__dict__: {‘__module__’: ‘__main__’, ‘__init__’: <function Employee.__init__ at 0x0000022F866B8B80>, ‘displayEmployee’: <function Employee.displayEmployee at 0x0000022F866B9760>, ‘__dict__’: <attribute ‘__dict__’ of ‘Employee’ objects>, ‘__weakref__’: <attribute ‘__weakref__’ of ‘Employee’ objects>, ‘__doc__’: None}

Instance Attributes trong Python

Instance attributes là những biến thuộc về một đối tượng cụ thể của lớp và được khai báo trong phương thức __init__().

Trong phương thức này, tham số đầu tiên luôn là self, dùng để tham chiếu đến chính đối tượng đó. Các instance attributes được định nghĩa bằng cách gán giá trị cho self.<tên thuộc tính> trong __init__().

Ví dụ: Đoạn code dưới đây minh họa cách hoạt động của instance attributes trong Python.

class Server:
   def __init__(self, name, ram):
      self.__name = name   # Instance attribute
      self.__ram = ram     # Instance attribute
      print("Tên server:", self.__name, ", RAM:", self.__ram)

# Tạo các đối tượng Server
server1 = Server("Vietnix Pro", "32GB DDR5")
server2 = Server("Vietnix Ultra", "64GB DDR5")

Kết quả: Khi chạy code trên, nó sẽ tạo ra kết quả như bên dưới. Với cách này, mỗi server của Vietnix sẽ có thuộc tính riêng, không bị ảnh hưởng bởi các server khác.

Tên server: Vietnix Pro , RAM: 32GB DDR5
Tên server: Vietnix Ultra , RAM: 64GB DDR5

So sánh Instance Attributes và Class Attributes

Bảng dưới đây thể hiện sự khác biệt giữa instance attributesclass attributes trong Python:

STTInstance AttributeClass Attribute
1Được định nghĩa bên trong phương thức __init__().Được định nghĩa trong lớp nhưng nằm ngoài phương thức __init__().
2Truy cập bằng cách sử dụng tên đối tượng kèm dấu chấm (.).Có thể truy cập bằng cả tên lớptên đối tượng.
3Giá trị không được chia sẻ giữa các đối tượng khác.Giá trị được chia sẻ giữa tất cả các đối tượng của lớp.
4Thay đổi giá trị chỉ ảnh hưởng đến đối tượng chứa nó.Thay đổi giá trị sẽ ảnh hưởng đến tất cả các đối tượng của lớp.
Bảng so sánh Instance Attributes và Class Attributes

Vietnix – Giải pháp lưu trữ tốc độ cao, bảo mật vượt trội

Vietnix là nhà cung cấp hàng đầu về dịch vụ thuê server, hosting, VPSdomain tại Việt Nam. Với cam kết hiệu suất tối ưu, bảo mật caohỗ trợ kỹ thuật 24/7, Vietnix đã được hơn 80.000 khách hàng tin tưởng lựa chọn. Dịch vụ cho thuê máy chủ của Vietnix giúp doanh nghiệp vận hành ổn định, an toàn và hiệu quả.

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Email: sales@vietnix.com.vn 
  • Hotline: 18001093
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.

Câu hỏi thường gặp

Class attributes khác gì so với instance attributes?

Class attributes được chia sẻ giữa tất cả các instance của lớp, trong khi instance attributes chỉ thuộc về từng đối tượng cụ thể.

Làm thế nào để truy cập class attributes?

Bạn có thể truy cập class attributes bằng tên lớp (ClassName.attribute_name) hoặc thông qua một instance (instance.attribute_name).

Có thể thay đổi class attributes từ một instance không?

, nhưng nếu thay đổi trực tiếp từ instance, Python sẽ tạo một instance attribute mới thay vì thay đổi class attribute gốc. Để thay đổi giá trị của class attribute, bạn nên sử dụng cú pháp ClassName.attribute_name = new_value.

Lời kết

Class attributes là một công cụ mạnh mẽ giúp tổ chức dữ liệu và quản lý trạng thái của các đối tượng trong lập trình Python. Khi sử dụng đúng cách, chúng giúp mã nguồn gọn gàng hơn và dễ bảo trì hơn. Nếu bạn có bất cứ thắc mắc hay cần hỗ trợ gì, hãy để lại bình luận bên dưới, mình sẽ phản hồi sớm nhất. Cảm ơn bạn đã đọc!

Mọi người cũng xem:

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn