classmethod 以及cls的使用
使用方法
class Person(object):
a = 1
def __init__(self,name,age):
self.name = name
self.age = age
print("此时正在调用__init__方法")
def func1(self):
print(self.a) # 访问类属性需要添加self
print('name:{}'.format(self.name))
print('age:{}'.format(self.age))
print("此时正在调用func1方法")
@classmethod
def func2(cls):
name = "小红"
age = 16
print("此时正在调用func2方法")
return cls(name,age) # cls代表着类本身,cls()表示Person()
@classmethod
def func3(cls):
print(cls.a) # 访问类属性需要添加cls
print("此时正在调用func3方法")
-
classmethod装饰的方法不需要实例化,可以直接调用。其中在func2中
return cls(name,age)
等价于return Person(name,age)
-
func1方法的调用需要实例化,同时在访问类的属性时需要添加self,即
self.a
-
同func1方法一样,由classmethod修饰的方法在访问类属性时需要添加cls,即
cls.a