Python类方法@classmethod()
在python中类方法是一种特殊的方法,它与类本身相关联,而不是与类的实例对象相关联。
class MyClass:
@classmethod
def my_class_method(cls, arg1, arg2):
# do something with cls, arg1, and arg2
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
a = MyClass()
b = MyClass()
c = MyClass()
print(MyClass.get_count()) # 输出 3
提供一种替代构造函数的方式
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_birth_year(cls, name, birth_year):
age = datetime.date.today().year - birth_year
return cls(name, age)
person = Person.from_birth_year('Alice', 1990)
print(person.name) # 输出 'Alice'
print(person.age) # 输出 33
在这个示例中,我们定义了一个名为from_birth_year的类方法。它接受一个名字和出生年份作为参数,并返回一个Person实例。使用类方法,我们可以提供一种替代构造函数的方式。
用类调用类方法,得到的结果是一个类实例。