背景:我想调用类里面的一个函数,但是报错takes 1 positional argument but 2 were given 问题解决。
,查了说是什么self。且又发现类函数的数据类型是method,而不是预期的function。
参考:https://www.zhihu.com/question/299219511/answer/2296455008
解决办法,把类方法变成类函数。
- 调用
A.函数
,而不是A().函数
- 修饰为静态方法
@static_mthod
,即可调用A().函数
class A():
def mthd(self):
pass
@staticmethod
def static_mthd():
pass
@classmethod
def class_mthd(cls):
pass
def func():
pass
a = A()
print(func.__class__) # <class 'function'>
print(a.static_mthd.__class__) # <class 'function'>
print(a.mthd.__class__) # <class 'method'>
print(A.mthd.__class__) # <class 'function'>
print(a.class_mthd.__class__) # <class 'method'>
print(A.class_mthd.__class__) # <class 'method'>
作者:Reticence
链接:https://www.zhihu.com/question/299219511/answer/2296455008
来源:知乎