“未绑定方法”是Python中的一种调用方式,指的是当Python中使用类来调用类的方法时,由于此时调用方法的不是对象,而是类本身,相当于没有调用者。此时Python不会自动为方法的第一个参数self
绑定参数值。因此程序必须显式地为第一个参数self
传入方法的调用者。
比如:
1 2 3 4 5 6 |
class Bird: def foo(self): print("Bird类的foo方法") bar = 200 b = Bird() Bird.foo() |
此时直接运行会出现这种错误:TypeError: foo() missing 1 required positional argument: 'self'
也就是缺少指定的self参数。如上面所说,此时我们需要显式地指定调用者,即将Bird.foo()
改为Bird.foo(b)
即可。
这种用法等于b.foo()
。
或者我们也可以不指定调用者,而是直接传入参数给self
,即:Bird.foo(“xxx”)
,由于在这个程序中我们并没与对self
进行操作,因此这里xxx
可以填任意数。当我们对self
进行操作时,这里填的xxx
就会传给self
。如:
1 2 3 4 5 6 7 8 9 |
class Bird: def foo(self): print(self," Bird类的foo方法") bar = 200 b = Bird() # b.info = MethodType(Bird,b) Bird.foo("xxx") #xxx Bird类的foo方法 |
本文最后更新于2019年12月29日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!