Từ khóa nào được sử dụng để tạo một phương thức bên trong một lớp trong python

classmethod[function]
1 được coi là không phải Python, vì vậy trong các phiên bản Python mới hơn, bạn có thể sử dụng trình trang trí
classmethod[function]
4 để định nghĩa phương thức lớp

Cú pháp là

@classmethod
def func[cls, args...]

classmethod[] Tham số

Phương thức

classmethod[function]
1 nhận một tham số duy nhất

  • chức năng - Hàm cần được chuyển đổi thành một phương thức lớp

classmethod[] Giá trị trả về

Phương thức

classmethod[function]
1 trả về một phương thức lớp cho hàm đã cho

một phương pháp lớp là gì?

Một phương thức lớp là một phương thức được liên kết với một lớp chứ không phải đối tượng của nó. Nó không yêu cầu tạo một thể hiện của lớp, giống như staticmethod

Sự khác biệt giữa phương thức tĩnh và phương thức lớp là

  • Phương thức tĩnh không biết gì về lớp và chỉ xử lý các tham số
  • Phương thức lớp hoạt động với lớp vì tham số của nó luôn là chính lớp đó

Phương thức lớp có thể được gọi bởi cả lớp và đối tượng của nó

Class.classmethod[]
Or even
Class[].classmethod[]

Nhưng dù thế nào thì phương thức của lớp luôn gắn với một lớp có đối số đầu tiên là chính lớp đó cls

def classMethod[cls, args...]

ví dụ 1. Tạo phương thức lớp bằng classmethod[]

class Person:
    age = 25

    def printAge[cls]:
        print['The age is:', cls.age]

# create printAge class method Person.printAge = classmethod[Person.printAge]

Person.printAge[]

đầu ra

________số 8

Ở đây, chúng ta có một lớp

classmethod[function]
7, với biến thành phần age được gán cho 25

Chúng ta cũng có một hàm

classmethod[function]
8 nhận một tham số duy nhất cls chứ không phải
classmethod[function]
9 mà chúng ta thường lấy

cls chấp nhận lớp

classmethod[function]
7 làm tham số thay vì đối tượng/thể hiện của Person

Bây giờ, chúng ta chuyển phương thức

@classmethod
def func[cls, args...]
1 làm đối số cho hàm
@classmethod
def func[cls, args...]
2. Điều này chuyển đổi phương thức thành phương thức lớp để nó chấp nhận tham số đầu tiên là lớp [i. e. Người]

Ở dòng cuối cùng, chúng ta gọi

classmethod[function]
8 mà không tạo đối tượng Person như cách chúng ta làm đối với các phương thức tĩnh. Điều này in biến lớp tuổi

Khi nào bạn sử dụng phương thức lớp?

1. phương pháp xuất xưởng

Các phương thức xuất xưởng là những phương thức trả về một đối tượng lớp [như hàm tạo] cho các trường hợp sử dụng khác nhau

Tương tự như nạp chồng hàm trong C++. Vì Python không có bất kỳ thứ gì như vậy nên các phương thức lớp và phương thức tĩnh được sử dụng

ví dụ 2. Tạo phương thức xuất xưởng bằng phương thức lớp

classmethod[function]
6

đầu ra

classmethod[function]
7

Ở đây, chúng ta có hai trình tạo cá thể lớp, một hàm tạo và một phương thức

@classmethod
def func[cls, args...]
4

Hàm tạo lấy tham số bình thường name và age. Trong khi,

@classmethod
def func[cls, args...]
4 lấy lớp, tên và năm sinh, tính tuổi hiện tại bằng cách lấy năm hiện tại trừ đi và trả về thể hiện của lớp

Phương thức fromBirthYear lấy lớp Person [không phải đối tượng Person] làm tham số đầu tiên cls và trả về hàm tạo bằng cách gọi

@classmethod
def func[cls, args...]
6, tương đương với
@classmethod
def func[cls, args...]
7

Trước phương thức, chúng ta thấy

classmethod[function]
4. Đây được gọi là trình trang trí để chuyển đổi
@classmethod
def func[cls, args...]
4 thành phương thức lớp là
classmethod[function]
1

2. Tạo phiên bản chính xác trong kế thừa

Bất cứ khi nào bạn dẫn xuất một lớp từ việc triển khai một phương thức xuất xưởng làm phương thức lớp, nó đảm bảo việc tạo thể hiện chính xác của lớp dẫn xuất

Bạn có thể tạo một phương thức tĩnh cho ví dụ trên nhưng đối tượng mà nó tạo ra, sẽ luôn được mã hóa cứng dưới dạng Lớp cơ sở

Tuy nhiên, khi bạn sử dụng một phương thức của lớp, nó sẽ tạo ra thể hiện đúng của lớp dẫn xuất

ví dụ 3. Làm thế nào phương thức lớp hoạt động cho kế thừa?

@classmethod
def func[cls, args...]
5

đầu ra

classmethod[function]
0

Ở đây, việc sử dụng một phương thức tĩnh để tạo một thể hiện của lớp muốn chúng ta mã hóa cứng loại thể hiện trong quá trình tạo

Điều này rõ ràng gây ra sự cố khi kế thừa

classmethod[function]
7 thành
Class.classmethod[]
Or even
Class[].classmethod[]
2

Phương thức

Class.classmethod[]
Or even
Class[].classmethod[]
3 không trả về đối tượng
Class.classmethod[]
Or even
Class[].classmethod[]
2 mà là đối tượng của lớp cơ sở
classmethod[function]
7

Điều này vi phạm mô hình OOP. Sử dụng một phương thức lớp như

@classmethod
def func[cls, args...]
4 có thể đảm bảo tính OOP của mã vì nó lấy tham số đầu tiên làm chính lớp đó và gọi phương thức xuất xưởng của nó

Từ khóa nào sau đây được sử dụng để tạo phương thức trong một lớp?

Từ khóa lớp được sử dụng để tạo lớp.

@classmethod nghĩa là gì trong Python?

Trong Python, trình trang trí @classmethod được dùng để khai báo một phương thức trong lớp dưới dạng một phương thức lớp có thể được gọi bằng Tên lớp. Tên phương thức[] . Phương thức lớp cũng có thể được gọi bằng cách sử dụng một đối tượng của lớp. @classmethod là một thay thế của hàm classmethod[].

Phương thức nào bên trong lớp?

Phương thức lớp là một phương thức có thể được gọi mà không cần tham chiếu đến bất kỳ thể hiện đối tượng nào; . Thuật ngữ phương thức thường dùng để chỉ một phương thức thể hiện. Cụm từ cụ thể hơn phương thức lớp được sử dụng để chỉ các phương thức lớp. static methods in other languages. The term method usually refers to an instance method. The more specific phrase class method is used to refer to class methods.

Chủ Đề