关于类:”cls”变量在python类中用于什么?

What is the 'cls' variable used for in Python classes?

为什么在Python类中有时使用cls而不是self作为参数?

例如:

1
2
3
4
5
6
7
8
class Person:
    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname

    @classmethod
    def from_fullname(cls, fullname):
        cls.firstname, cls.lastname = fullname.split(' ', 1)

"self""cls"的区别在PEP 8中定义。正如阿德里安所说,这不是强制性的。这是一种编码方式。PEP 8说:

Function and method arguments:

Always use self for the first argument to instance methods.

Always use cls for the first argument to class methods.


它用于类方法的情况。请查看此参考以了解更多详细信息。

编辑:正如阿德里安所阐明的,这是一个惯例。您实际上可以使用除clsself之外的任何东西(pep8)。


cls意味着该方法属于该类,而Soad暗示该方法与类的实例有关,因此EDCOX1×0的成员被类名访问,因为该类中的一个是通过类的实例访问的……如果Java是Java的,那么它与Java中的EDCOX1、8和EDCOX1 9的概念相同。UND


这是一个很好的问题,但并不像问题那样需要。"self"和"cls"使用的方法虽然相似,但它们在同一个地方。

1
2
3
4
5
6
7
8
9
def moon(self,moon_name):
    self.MName =moon_name

#but here cls method its use is different


def moon(cls,moon_name):
    instance=cls()
    instance.MName=moon_name

现在您可以看到这两个函数都是moon函数,但其中一个可以在类内使用,而另一个函数名moon可以用于任何类。

对于实际编程方法:

在设计循环类时,我们使用区域方法作为cls而不是self,因为我们不希望区域仅限于特定的循环类。