3 回答
TA贡献1831条经验 获得超4个赞
只需删除@staticmethod,当您不想将方法链接到对象的实例时使用那些(即copyingfile.mover()。您还应该使用 PascalCase(首字母大写)重命名您的类并删除class copyingfiles.
TA贡献1865条经验 获得超7个赞
__init__(构造函数)不能是静态方法。当你调用类的构造函数MyClass()的__init__方法被调用。该self是到该方法属于对象的占位符参数-它可以让你访问该对象的属性。但是,如果您将其设为a,@staticmethod则将self其解释为正常参数 - 这就是您看到该Required 1 argument错误的原因。
TA贡献1875条经验 获得超5个赞
删除@staticmethod定义之前的装饰器__init__。当你用 装饰一个方法时@staticmethod,这个方法不会将对象作为隐式的第一个参数(所以你不应该self输入它的签名)。
例如,在下面,您可以看到调用这两个方法时没有传递任何显式参数,即使A.non_static需要参数self。这是因为通常的方法会self隐式接收,而静态方法则不会。
>>> class A:
... @staticmethod
... def static(): # No `self` argument
... print('static')
... def non_static(self): # Here `self` is required
... print('non-static')
>>> a = A() # a is an instance of A
>>> a.static()
'static'
>>> a.non_static()
'non-static'
添加回答
举报
