此代码:不带参数的类方法产生类型错误
class testclass:
def __init__(self,x,y):
self.x = x
self.y = y
self.test()
def test():
print('test')
if __name__ == '__main__':
x = testclass(2,3)
产量:
Error:
TypeError:test() takes no argument(1 given)
我打电话不带任何参数的测试功能,为什么错误说,我已经给了一个?
我错过了这个答案中** bound **和** unbound **方法之间的区别(在所有这些方法中直到现在)。这就是所有不同之处。当调用未绑定的方法时,你需要明确地传递'self',绑定的(通常情况下)它隐式地发生。 –
@LukasGraf我将绑定方法视为实现自我自动传递的机制,而不是核心概念。当然,他们远远超出了似乎适合这个问题的水平。实际上,从Python3中删除了未绑定的方法是一个糟糕的想法(它将绑定的方法仅仅作为记忆'self'以便将其传递给函数的机制),而Python的Python语法则提示Python3。 – Ben