Hướng dẫn what is classmethod in python? - classmethod trong python là gì?

ClassMethod () là một hàm sẵn có trong Python, trả về một phương thức lớp cho một hàm nhất định .;classmethod() is an inbuilt function in Python, which returns a class method for a given function.;

Cú pháp: classMethod (hàm) classmethod(function)

Tham số: Hàm này chấp nhận tên hàm là tham số.This function accepts the function name as a parameter.

Loại trả về: Hàm này trả về phương thức lớp được chuyển đổi.This function returns the converted class method.

Bạn cũng có thể sử dụng công cụ trang trí @ClassMethod cho định nghĩa ClassMethod.

Syntax: 

@classmethod
   def fun(cls, arg1, arg2, ...):

Where, 

  • Vui vẻ: Chức năng cần được chuyển đổi thành phương pháp lớp the function that needs to be converted into a class method
  • Trả về: Một phương thức lớp cho chức năng. a class method for function.

Các phương thức classMethod () được liên kết với một lớp chứ không phải là một đối tượng. Các phương thức lớp có thể được gọi bởi cả lớp và đối tượng. Các phương thức này có thể được gọi với một lớp hoặc với một đối tượng. & Nbsp;

Phương pháp lớp so với phương pháp tĩnh

  • Một phương thức lớp lấy CLS làm tham số đầu tiên trong khi phương thức tĩnh không cần tham số cụ thể.
  • Phương thức lớp có thể truy cập hoặc sửa đổi trạng thái lớp trong khi phương thức tĩnh có thể truy cập hoặc sửa đổi nó.
  • Nói chung, các phương pháp tĩnh không biết gì về trạng thái lớp. Chúng là các phương thức loại tiện ích lấy một số tham số và hoạt động dựa trên các tham số đó. Mặt khác, các phương thức lớp phải có lớp dưới dạng tham số.
  • Chúng tôi sử dụng công cụ trang trí @ClassMethod trong Python để tạo phương thức lớp và chúng tôi sử dụng công cụ trang trí @staticmethod để tạo phương thức tĩnh trong Python.

Ví dụ về ClassMethod trong Python

Ví dụ 1: Tạo một lớp đơn giản

Trong ví dụ này, chúng ta sẽ thấy cách tạo ClassMethod, vì điều này, chúng tôi đã tạo một lớp có tên Geek với khóa học biến thành viên và tạo một giao dịch mua chức năng in đối tượng.

Bây giờ chúng tôi đã chuyển phương thức Geek.purchase thành ClassMethod chuyển đổi các phương thức thành phương thức lớp và sau đó chúng tôi gọi mua chức năng lớp mà không tạo đối tượng chức năng.

Python3

class geeks:

    course ____10

Puchase course :  DSA
1

    

Puchase course :  DSA
3
Puchase course :  DSA
4

Puchase course :  DSA
5
Puchase course :  DSA
6
Puchase course :  DSA
7
Puchase course :  DSA
8
Puchase course :  DSA
9

The name is :  Geeksforgeeks
0____10
The name is :  Geeksforgeeks
223

The name is :  Geeksforgeeks
4

Output:

Puchase course :  DSA

Ví dụ 2: Tạo phương thức lớp bằng classMethod ()Create class method using classmethod()

Python3

class

The name is :  Geeksforgeeks
6

    

The name is :  Geeksforgeeks
8
Puchase course :  DSA
0
Name :  mayank Age :  21
0

    

Puchase course :  DSA
3
Name :  mayank Age :  21
3

Puchase course :  DSA
5
Puchase course :  DSA
6
Puchase course :  DSA
7
Name :  mayank Age :  21
7
Name :  mayank Age :  21
8

Name :  mayank Age :  21
9
Puchase course :  DSA
0
The name is :  Geeksforgeeks
22
class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
2

class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
3

Output:

The name is :  Geeksforgeeks

Ví dụ 3: Phương pháp nhà máy sử dụng phương pháp lớp

Việc sử dụng hàm classMethod () được sử dụng trong các mẫu thiết kế nhà máy nơi chúng tôi muốn gọi nhiều chức năng với tên lớp chứ không phải là một đối tượng.

Python3

class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
4
class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
5
class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
6
class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
7

class

class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
9

    

Puchase course :  DSA
3
21
25
True
2
21
25
True
3
21
25
True
4

Puchase course :  DSA
5
21
25
True
3
21
25
True
7____10
21
25
True
9

Puchase course :  DSA
5
21
25
True
3class2____10 class4

    class6

    

Puchase course :  DSA
3 class9geeks:0geeks:1

Puchase course :  DSA
5geeks:3 geeks:0geeks:5geeks:6 geeks:7

    

Puchase course :  DSA
3     0
21
25
True
3    2

Puchase course :  DSA
5
Puchase course :  DSA
6
Puchase course :  DSA
7    6    7
21
25
True
3    9course 0    7
21
25
True
3course 3

course 4

Puchase course :  DSA
0 course 6course 7    7course 9
Puchase course :  DSA
00

Puchase course :  DSA
01

Output:

Name :  mayank Age :  21

Bộ trang trí @ClassMethod

Bộ trang trí @ClassMethod là một bộ trang trí chức năng tích hợp, là một biểu thức được đánh giá sau khi chức năng của bạn được xác định. Kết quả của việc đánh giá đó bóng tối định nghĩa chức năng của bạn. & Nbsp;

Một phương thức lớp nhận lớp là đối số đầu tiên ngầm, giống như một phương thức thể hiện nhận được thể hiện.

Syntax:

class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....

Where,

  • Vui vẻ: Chức năng cần được chuyển đổi thành phương pháp lớp the function that needs to be converted into a class method
  • Trả về: Một phương thức lớp cho chức năng. a class method for function.

Note:

  • Các phương thức classMethod () được liên kết với một lớp chứ không phải là một đối tượng. Các phương thức lớp có thể được gọi bởi cả lớp và đối tượng. Các phương thức này có thể được gọi với một lớp hoặc với một đối tượng. & Nbsp;
  • Phương pháp lớp so với phương pháp tĩnh
  • Một phương thức lớp lấy CLS làm tham số đầu tiên trong khi phương thức tĩnh không cần tham số cụ thể.

Phương thức lớp có thể truy cập hoặc sửa đổi trạng thái lớp trong khi phương thức tĩnh có thể truy cập hoặc sửa đổi nó.

Nói chung, các phương pháp tĩnh không biết gì về trạng thái lớp. Chúng là các phương thức loại tiện ích lấy một số tham số và hoạt động dựa trên các tham số đó. Mặt khác, các phương thức lớp phải có lớp dưới dạng tham số.

class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
4
class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
5
class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
6
class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
7

class

class C(object):
    @classmethod
    def fun(cls, arg1, arg2, ...):
       ....
9

    

Puchase course :  DSA
3
21
25
True
2
21
25
True
3
21
25
True
4

Puchase course :  DSA
5
21
25
True
3
21
25
True
7____10
21
25
True
9

Puchase course :  DSA
5
21
25
True
3class2____10 class4

    class6

    

Puchase course :  DSA
3 class9geeks:0geeks:1

Puchase course :  DSA
5geeks:3 geeks:0geeks:5geeks:6 geeks:7

    

Puchase course :  DSA
37

    

Puchase course :  DSA
3     0
21
25
True
3    2

course 4

Puchase course :  DSA
0 course 6course 7    7course 9
Puchase course :  DSA
00

Bộ trang trí @ClassMethod

Bộ trang trí @ClassMethod là một bộ trang trí chức năng tích hợp, là một biểu thức được đánh giá sau khi chức năng của bạn được xác định. Kết quả của việc đánh giá đó bóng tối định nghĩa chức năng của bạn. & Nbsp;

Puchase course :  DSA
6
Puchase course :  DSA
60

Puchase course :  DSA
6
Puchase course :  DSA
62

Puchase course :  DSA
6
Puchase course :  DSA
64
Puchase course :  DSA
65
Puchase course :  DSA
66

Output:

21
25
True

Mục đích của ClassMethod trong Python là gì?

Trong Python, bộ trang trí @ClassMethod được sử dụng để khai báo một phương thức trong lớp như một phương thức lớp có thể được gọi bằng cách sử dụng className.methodName (). Phương pháp 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 giải pháp thay thế cho hàm classMethod ().to declare a method in the class as a class method that can be called using ClassName. MethodName() . The class method can also be called using an object of the class. The @classmethod is an alternative of the classmethod() function.

Khi nào bạn nên sử dụng một python classmethod?

Bạn có thể sử dụng các phương thức lớp cho bất kỳ phương thức nào không bị ràng buộc với một trường hợp cụ thể mà là lớp.Trong thực tế, bạn thường sử dụng các phương thức lớp cho các phương thức tạo ra một thể hiện của lớp.Khi một phương thức tạo một thể hiện của lớp và trả về nó, phương thức được gọi là phương thức nhà máy.any methods that are not bound to a specific instance but the class. In practice, you often use class methods for methods that create an instance of the class. When a method creates an instance of the class and returns it, the method is called a factory method.

Lợi thế của classmethod trong Python là gì?

Nó làm cho rõ ràng hơn rằng phương pháp không sử dụng bất kỳ trạng thái nào từ trường hợp, thường được đặt tên là bản thân.Ngoài ra, nó có nghĩa là bạn có thể kiểm tra nó trên lớp mà không cần tạo một thể hiện., usually named self . Also it means you can test it on the class without creating an instance.

Sự khác biệt giữa ClassMethod và StaticMethod trong Python là gì?

Phương thức lớp có thể truy cập và sửa đổi phương thức trạng thái lớp. Không thể truy cập hoặc sửa đổi trạng thái lớp.Phương thức lớp lấy lớp làm tham số để biết về trạng thái của lớp đó.Phương pháp tĩnh không biết về trạng thái lớp. Static Method cannot access or modify the class state. The class method takes the class as parameter to know about the state of that class. Static methods do not know about class state.