我正在读一本关于Python中面向对象编程的书。有一句我很困惑:
解释器自动将调用该方法的实例绑定到
self
参数。
在这句话中绑定到实例的内容。方法,或self
参数?
答案 0 :(得分:2)
这实际上并不是一个糟糕的问题,而且我不确定为什么它会如此迅速地被贬低...
尽管Python支持面向对象,但我发现它更接近函数式编程语言,其中一个原因是函数被调用" on"对象,而不是" by"它们。
例如:len(obj)
在" true"面向对象的编程语言,您希望能够执行obj.length()
关于self
参数,您正在调用obj.method(other_args)
,但真正发生的事情是将此调用转换为:method(obj, other_args)
您可以看到声明您使用作为第一个参数传入的self
变量来执行此方法:
class ...
def method(self, other_args):
...
所以它基本上都是关于"翻译" obj.method(other_args)
至method(obj, other_args)