created:01-17-2022
views:14
0

经常会看到python类中使用cls而不是self的情况,心想这cls没定义也没传进来,怎么可以直接使用呢?

比如这个例子:

class TestClass:
    counter = 0

    def __init__(self, val):
        self.val = val
        # self.counter = TestClass.counter
        TestClass.counter += 1

    def get_counter(cls):
        return cls.counter

这里的cls是指什么呢?

asked 4 months ago
user image 完土
添加评论
评论需要先登录哦o( ̄ε ̄*)
0
  • self作为实例方法的第一个参数
  • cls作为类方法的第一个参数

也就是,类方法需要创建实例后才能调用,如:

class Test:
   def hello(self, name):
      print ('hello ', name)

obj = Test()
obj.hello('Rahul')

而类方法(或静态方法),不依赖是否创建了实例,可以通过类名直接调用,这就不同self而是用cls:

class Test:
       def hello(cls, name):
          print ('hello ', name)


Test.hello('haha')

参考:reference

01-17-2022
添加评论
评论需要先登录哦o( ̄ε ̄*)
添加回答