为什么在Python类中有时使用cls而不是self作为参数?
例如:
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)
这是个很好的问题,但不像问题那样令人生厌。
“自我”和“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可以用于任何类。
对于实际编程方法:
在设计圆类时,我们使用area方法作为cls,而不是self,因为我们不希望area只局限于特定的圆类。