Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

classmethod() trong Python


Một class method (phương thức lớp) nhận chính lớp đó làm đối số đầu tiên. Cách này cho phép chúng ta gọi phương thức bên trong một lớp mà không cần tạo một instance (thể hiện) từ lớp đó trước. Chúng ta chỉ cần sử dụng decorator @classmethod trước khai báo phương thức chứa trong lớp và sau đó có thể truy cập trực tiếp phương thức đó. Dưới đây là các đặc điểm chính của classmethod.

  • Một classmethod bị ràng buộc với một lớp và không phụ thuộc vào việc khởi tạo một lớp để được sử dụng.
  • Một classmethod có thể sửa đổi một lớp, điều này sẽ lan truyền đến tất cả các instance của lớp đó.

Sử dụng classmethod

Trong ví dụ dưới đây, chúng ta tạo một lớp tên là WeekDay và tạo một phương thức trong nó tên là daynames. Sau đó chúng ta truy cập phương thức này mà không cần khởi tạo lớp trước, có nghĩa là không tạo bất kỳ đối tượng nào từ lớp.

Ví dụ

class WeekDay:
    day_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
    # Áp dụng class method
    @classmethod
    def daynames(cls):
        print('The WeekDays are', cls.day_name)
WeekDay.daynames()  # HOẶC
WeekDay().daynames()

Kết quả

Chạy mã trên cho kết quả sau:

The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']

Không sử dụng classmethod

Để đạt được cùng kết quả mà không dùng classmethod, chúng ta có thể khai báo phương thức mà không cần lớp. Điều này cho thấy lý do chúng ta cần class method.

Ví dụ

def daynames():
    day_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
    print('The WeekDays are', day_name)
daynames()

Kết quả

Chạy mã trên cho kết quả sau:

The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']