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