请问代码中的get_hobby(cls)是什么意思
请问下:@classmethod
def get_hobby(cls):
return cls.hobby
这里的cls是什么对象?为什么在调用时Programer.get_hobby()中没有cls传入,而是用(空)来调用?
请问下:@classmethod
def get_hobby(cls):
return cls.hobby
这里的cls是什么对象?为什么在调用时Programer.get_hobby()中没有cls传入,而是用(空)来调用?
2017-06-20
通过@classmethod,get_hobby()就是一个类方法,cls表示class,在调用的时候都是将类以隐含的参数传递过去的,所以是用空来调用。
class ParentClass(object):
var = "test for parent"
@classmethod
def clsmethod(cls):
print cls.var
class SubClass(ParentClass):
var = "test for sub"
在这个例子中,ParentClass.clsmethod输出为 “test for parent”,而Subclass.clsmethod输出为“test for sub”,通过此比较很好的诠释了@classmethod类方法隐式传入的第一个参数也就是cls,是当前类,而不是父类。同时类方法操作的是class 类对象提供的内部信息。
还有https://www.zhihu.com/question/22869546,在这个链接里面可以看到作者的调用过程,比较详细,希望对你有帮助。
举报