Home  >  Article  >  Backend Development  >  The difference between python class methods and static methods

The difference between python class methods and static methods

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-06-24 10:18:333175browse

Python fully supports defining class methods and even supports defining static methods. Python's class methods are very similar to static methods. They are both recommended to be called using classes (in fact, they can also be called using objects).

The difference between python class methods and static methodsThe difference between class methods and static methods

Python will automatically bind the first parameter of the class method. The first parameter of the class method (usually It is recommended that the parameter named cls) will be automatically bound to the class itself; but for static methods, it will not be automatically bound.
The method modified with @classmethod is a class method; the method modified with @staticmethod is a static method.

Related recommendations: "Python Video Tutorial"
The following code demonstrates defining class methods and static methods:

class Bird:
    # classmethod修饰的方法是类方法
    @classmethod
    def fly (cls):
        print('类方法fly: ', cls)
    # staticmethod修饰的方法是静态方法
    @staticmethod
    def info (p):
        print('静态方法info: ', p)
# 调用类方法,Bird类会自动绑定到第一个参数
Bird.fly()  #①
# 调用静态方法,不会自动绑定,因此程序必须手动绑定第一个参数
Bird.info('crazyit')
# 创建Bird对象
b = Bird()
# 使用对象调用fly()类方法,其实依然还是使用类调用,
# 因此第一个参数依然被自动绑定到Bird类
b.fly()  #②
# 使用对象调用info()静态方法,其实依然还是使用类调用,
# 因此程序必须为第一个参数执行绑定
b.info('fkit')

As can be seen from the code in bold above, the method modified with @classmethod is a class method. This class method defines a cls parameter, which will be automatically bound to the Bird class itself, regardless of whether the program calls it using a class or an object. Method, Python will always bind the first parameter of the class method to the class itself, such as the execution effect of code No. 1 and No. 2.
The above program also uses @staticmethod to define a static method. The program can also use classes to call static methods or objects to call static methods. No matter which method is used, Python will not perform automatic binding for static methods. Certainly.
When programming in Python, there is generally no need to use class methods or static methods. The program can use functions instead of class methods or static methods. But in special scenarios (such as using the factory pattern), class methods or static methods are also good choices.

The above is the detailed content of The difference between python class methods and static methods. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn