Python 的实例属性如何理解?
在看 编程导论 的面对对象编程时,提到了一个示例:(部分代码)
class IntSet(object):
def insert(self, e):
<...>
s = IntSet()
在随后的讲解中,作者提到: IntSet.insert
和 s.insert
是不同的对象。这句话如何理解?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个问题涉及的东西有点多。
简单的讲就是类属性,实例属性的区别。
扩展开来讲就是类属性和实例属性查找的细节不同,这里面包括内置方法,描述符,装饰器相关知识。
这方面的文章有:
[编写高质量代码 改善 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)
,也就是把实例对象绑定作为第一个变量后得到的新的函数。