在看 编程导论 的面对对象编程时,提到了一个示例:(部分代码)
class IntSet(object):
def insert(self, e):
<...>
s = IntSet()
在随后的讲解中,作者提到:IntSet.insert和s.insert是不同的对象。这句话如何理解?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个问题涉及的东西有点多。
简单的讲就是类属性,实例属性的区别。
扩展开来讲就是类属性和实例属性查找的细节不同,这里面包括内置方法,描述符,装饰器相关知识。
这方面的文章有:
[编写高质量代码 改善Python程序的91个建议]这本书的第59,第60个建议。
原文:
Python Attributes and Methods
Descriptor HowTo Guide
译文:
Python属性和方法
Python描述器引导(翻译)
s.insert(e)相当于IntSet.insert(s, e);s.insert相当于functools.partial(IntSet.insert, s),也就是把实例对象绑定作为第一个变量后得到的新的函数。