“self”在@classmethod中指的是什么?

2024-04-26 11:09:04 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

class itself

A class method receives the class as implicit first argument, just like an instance method receives the instance.

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

>>> C.f()
C <class 'type'>

它是cls规范的,顺便说一句

class method的第一个参数按惯例命名为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

类对象作为第一个参数传递。例如:

class Foo(object):
    @classmethod
    def bar(self):
        return self()

将返回Foo类的实例。

编辑

注意最后一行是self()而不是self。self将返回类本身,self()返回实例。

相关问题 更多 >