Answers:
用于类方法的情况。检查此参考以获取更多详细信息。
编辑:正如Adrien所阐明的,这是一个约定。您实际上可以使用cls
和self
以外的任何东西(PEP8)。
cls
表示方法属于该类,而自身表示该方法与该类的实例有关,因此with的成员cls
可以通过类名访问,而with的成员可以通过该类的实例访问...这是同一概念如static member
与non-static members
在Java中,如果你是从Java背景。
static member
和non-static members
,了解它的C ++背景
这是一个很好的问题,但没有问题那么严重。尽管“ self”和“ cls”使用的方法位于相同的位置,但它们之间存在差异
def moon(self, moon_name):
self.MName = moon_name
#but here cls method its use is different
@classmethod
def moon(cls, moon_name):
instance = cls()
instance.MName = moon_name
现在您可以看到两者都是moon函数,但是一个可以在类内部使用,而另一个函数名称moon可以用于任何类。
对于实用的编程方法:
在设计圆类时,我们将区域方法用作cls而不是self,因为我们不希望将区域仅限于特定的圆类。