【发布时间】:2015-01-20 01:49:53
【问题描述】:
考虑这段代码:
class Person(object):
def sayHello(self):
return 'Hello'
print(Person().sayHello is Person().sayHello)
我希望它显示 True。为什么显示为 False?
【问题讨论】:
-
@Test 为什么你希望你的表达式为真?您一定希望这两个子表达式是同一个对象。是什么让您得出这个结论?
-
@quamrana - 因为
sayHello只定义了一次。该方法被实例化为一个绑定的方法对象并不是很明显。 -
因为
is用于对象,而不是方法 -
方法是对象。但是,当您访问绑定函数时,您不会获得对最初定义函数的引用;每次访问该函数时,您都会获得一个新创建的方法对象。看到这个答案:stackoverflow.com/questions/15977808/…
标签: python class python-3.x object identity