为了账号安全,请及时绑定邮箱和手机立即绑定

请问代码中的get_hobby(cls)是什么意思

请问下:@classmethod

                     def get_hobby(cls):

                             return  cls.hobby

这里的cls是什么对象?为什么在调用时Programer.get_hobby()中没有cls传入,而是用(空)来调用?

正在回答

3 回答

和self一样理解就好了,或者你可以理解为“规定”

0 回复 有任何疑惑可以回复我~

通过@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,在这个链接里面可以看到作者的调用过程,比较详细,希望对你有帮助。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问代码中的get_hobby(cls)是什么意思

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信