通过Class.method(instance)和instance.method()调用方法之间的区别

时间:2016-01-25 05:33:37

标签: python methods

在各种教程中,我发现它声称使用instance.method()调用方法在句法上等同于Class.method(instance)。我还在研究什么方法绑定'是和官方的python文档说明:

  

"当引用的实例属性不是数据属性时,   它的类被搜索。如果名称表示有效的类属性   这是一个函数对象,通过打包创建方法对象   (指向)实例对象和刚刚找到的函数对象   在一个抽象对象中:这是方法对象。当。。。的时候   使用参数列表调用方法对象,新的参数列表是   从实例对象和参数列表构造而来   使用这个新的参数列表调用function对象。"

根据此描述,只显示instance.method()语法会产生一个'抽象方法对象'正在创建,因为正在引用'实例属性'。如果是这种情况,这两个表达式在语法上是如何等效的?

1 个答案:

答案 0 :(得分:0)

因为创建该抽象对象只是一个中间步骤。在你给出的报价中,最终结果是:

  

从实例对象和参数列表构造一个新的参数列表,并使用这个新的参数列表调用函数对象

换句话说,最后,调用“is”方法的函数对象,将实例作为第一个参数,并传递其余参数。当你使用实例作为第一个参数调用方法时,也会发生这种情况。