揭示函数、未绑定方法和绑定方法的本质
类和方法的概念是面向对象编程范例的基础。了解函数、未绑定方法和绑定方法之间的细微差别和关系对于掌握 Python 方法解析系统的复杂性至关重要。
定义实体
转换和可访问性
主要区别
等价和用法
在Python 2和Python 3中,以下表达式是功能等效:
f1(C())
C.f1(C())
C().f1()
将函数绑定到实例会创建一个修改版本,其中第一个参数本质上设置为给定实例。本质上,此绑定方法的行为与以下替代形式相同:
lambda *args, **kwargs: f1(C(), *args, **kwargs)
functools.partial(f1, C())
从 Unbound 到 Bound
类的 Python 2 实例没有与未绑定方法相对应的直接属性,这些属性是相反,可以通过类本身的 __dict__ 属性进行检索。但是,访问实例上的非绑定方法会导致其自动转换为绑定方法。
结论
掌握函数、非绑定方法和绑定方法之间的区别使您能够有效地利用Python的方法解析机制。理解绑定和转换的机制使您能够轻松应对面向对象编码的复杂性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3