Computer >> Máy Tính >  >> Lập trình >> Python

classmethod () trong Python

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

  • Một classmethod được liên kết với một lớp và không phụ thuộc vào việc khởi tạo một lớp sẽ được sử dụng.

  • Một phương pháp phân lớp có thể sửa đổi một lớp mà lần lượt nó sẽ truyền đến tất cả các trường hợp của lớp đó.

Sử dụng phương pháp phân loại

Trong ví dụ dưới đây, chúng tôi tạo một lớp có tên là WeekDay và tạo một phương thức trong đó có tên là daynames. Sau đó, chúng tôi truy cập phương thức này mà không cần khởi tạo lớp trướ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']
# Applying the class method
   @classmethod
   def daynames(n):
      print('The WeekDays are', n.day_name)

WeekDay.daynames()
# OR
WeekDay().daynames()

Đầu ra

Chạy đoạn mã trên cho chúng ta 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 phương pháp phân loại

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

Ví dụ

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

daynames()

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

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