What is @classmethod in python
GOAL
To understand what @classmethod in python is and how to use it
What is classmethod?
@classmethod is a function decorator.
class C:
@classmethod
def f(cls, arg1, arg2, ...):A class method can be called either on the class (such as C.f()) or on an instance (such as C().f()). The instance is ignored except for its class. If a class method is called for a derived class, the derived class object is passed as the implied first argument.
Python document >library >fuction
Features of class methods
- class methods can be called as the form Classname.method_name() without generate instance.
- class methods receive ‘cls’ not ‘self’ as argument.
How to use
Functions that access the internal data of the class can be managed collectively with class itself.
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
@classmethod
def testpoint_to_grade(cls, name, testpoint):
if testpoint > 90:
return cls(name, 'A')
elif testpoint > 80:
return cls(name, 'B')
elif testpoint > 60:
return cls(name, 'C')
else:
return cls(name, 'D')
def print_grade(self):
print(self.grade)
student1 = Student('Alice', 'C')
student2 = Student.testpoint_to_grade('Ben', 85)
student1.print_grade()
>> C
student2.print_grade()
>> B