>>> class A:
... def m(self): return 42
...
>>> a = A()
这是预料中的情况:
>>> A.m == A.m
True
>>> a.m == a.m
True
但是这个我没有预料到:
>>> a.m is a.m
False
尤其不要出现这种情况:
>>> A.m is A.m
False
Python似乎会为每个方法访问创建新的对象。我为什么会看到这种行为?也就是说,为什么它不能每个类和每个实例重用一个对象?
a.m
可能会触发代码,从而替换下一次访问的m
。 - Martijn Pieters