直接将函数参数传递给cls()
这个问题在这里已经有了答案:
现在你已经编辑了你的问题,很清楚发生了什么事情。 你的方法有一个装饰器@classmethod。 根据文档:
类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 为了声明一个类方法,使用这个习惯用法:
class C:
    @classmethod
    def f(cls, arg1, arg2, ...): ...
这(有点)等同于:
class MyClass:
    def f(self, arg1, arg2, ...):
        cls = self.__class__
        ...
  Python中的类是可调用的(例如,它们可以用Class()调用)。  因此这两件事是等同的: 
a = MyClass()
和
cls = MyClass
b = cls()
  总之, cls不是一个函数,而是一个可调用的函数。  顺便说一句。  您可以通过添加特殊方法__call__来使任何对象可__call__ : 
class A:
    def __call__(self):
        print("Woah!")
a = A()
a()   # prints Woah!
看起来第一个参数是一个类,第二个参数是一组键值参数(参见描述双星符号的这个问题)。
在函数内部,键值参数被传递给类的构造函数来创建变量线程。
链接地址: http://www.djcxy.com/p/9073.html