为什么有时在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)
发布于 2018-03-11 22:55:11
cls
表示方法属于类,而self表示方法与类的实例相关,因此带有cls
的成员通过类名访问,其中带有self的成员由class...it的实例访问,这与java中的static member
和non-static members
是相同的概念,如果您来自java背景。
发布于 2021-10-20 22:07:14
如果您希望通过实例访问方法,请将第一个参数保留为self。例如:
class Test:
def hello(self, name):
print ('hello ', name)
obj = Test()
obj.hello('Rahul')
如果你想像我们在静态类中那样使用类名访问方法,最好使用cls作为方法中的第一个参数。例如:
class Test:
def hello(cls, name):
print ('hello ', name)
Test.hello('Rahul')
https://stackoverflow.com/questions/4613000
复制相似问题