当前位置:  开发笔记 > 编程语言 > 正文

"自我"在@classmethod中引用了什么?

如何解决《"自我"在@classmethod中引用了什么?》经验,为你挑选了2个好方法。

我以为我开始掌握编程的"Python方式".类的方法接受self作为第一个参数来引用正在调用该方法的上下文的类的实例.@ classmethod装饰器引用一个方法,其功能与类相关联,但不引用具体实例.

那么,如果没有实例引用调用该方法,那么@classmethod(规范'self')的第一个参数是什么意思?



1> SilentGhost..:

类本身:

类方法接收类作为隐式的第一个参数,就像实例方法接收实例一样.

class C:
    @classmethod
    def f(cls):
        print(cls.__name__, type(cls))

>>> C.f()
C 

这是cls规范的,顺便说一下



2> Torsten Mare..:

classmethod的第一个参数cls按约定命名,并引用调用它的方法的类对象.

>>> class A(object):
...     @classmethod
...     def m(cls):
...         print cls is A
...         print issubclass(cls, A)

>>> class B(A): pass
>>> a = A()
>>> a.m()
True
True
>>> b = B()
>>> b.m()
False 
True

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有