The more common method types in Python are instance methods and class methods. How are they defined? How to call it? What are their differences and functions? See below.
#First of all, these methods are defined in the class. Let me first briefly talk about how to define and call it. (PS: Instance objects have the greatest permissions.)
Instance method (Recommended learning: Python video tutorial)
Definition: first parameter It must be an instance object. The parameter name is generally agreed to be "self", through which the attributes and methods of the instance can be passed (the attributes and methods of the class can also be passed);
Call: can only be called by the instance object.
Class method
Definition: Use the decorator @classmethod. The first parameter must be the current class object. The parameter name is generally agreed to be "cls", through which the attributes and methods of the class are passed (the attributes and methods of the instance cannot be passed);
Call: instance object and Class objects can be called.
Instance methods
In short, instance methods are methods that can be used by instances of a class. Not much explanation here.
Class method
Use the decorator @classmethod.
In principle, class methods are methods that operate on the class itself as an object. Suppose there is a method, and it is logically more reasonable for this method to be called using the class itself as an object, then this method can be defined as a class method. In addition, if inheritance is required, it can also be defined as a class method.
Suppose I have a student class and a class class. The functions I want to achieve are:
Perform the operation of increasing the class size and obtain the total number of class members;
Students The class inherits from the class class. Every time a student is instantiated, the number of students in the class can increase;
Finally, I want to define some students and get the total number of people in the class.
class ClassTest(object): __num = 0 @classmethod def addNum(cls): cls.__num += 1 @classmethod def getNum(cls): return cls.__num # 这里我用到魔术方法__new__,主要是为了在创建实例的时候调用累加方法。 def __new__(self): ClassTest.addNum() return super(ClassTest, self).__new__(self) class Student(ClassTest): def __init__(self): self.name = '' a = Student() b = Student() print(ClassTest.getNum())
For more Python-related technical articles, please visit the Python Tutorial column to learn!
The above is the detailed content of The difference between Python class methods and instance methods. For more information, please follow other related articles on the PHP Chinese website!