为什么不';python中的t绑定实例方法引用equal? >>类foo(对象): ... def测试: ... 通过 ... >>>a=foo() >>>考试就是考试 假的 >>>打印测试 >>>打印测试 >>>散列(a.test) 28808 >>>散列(a.test) 28808 >>>id(a.test) 27940656 >>>id(a.test) 27940656 >>>b=a.试验 >>>b是b 真的

为什么不';python中的t绑定实例方法引用equal? >>类foo(对象): ... def测试: ... 通过 ... >>>a=foo() >>>考试就是考试 假的 >>>打印测试 >>>打印测试 >>>散列(a.test) 28808 >>>散列(a.test) 28808 >>>id(a.test) 27940656 >>>id(a.test) 27940656 >>>b=a.试验 >>>b是b 真的,python,equality,sentinel,Python,Equality,Sentinel,它们在运行时绑定;每次访问对象上的属性都会重新绑定该方法。当您将两个方法放在同一行时,它们不同的原因是第一个方法在第二个方法绑定时尚未发布。换句话说,id每次看起来都一样,因为前一个实例在结果打印后立即被gc处理,在这个特定版本的CPython中,内存管理恰好是可以预测的,足以将下一个对象放在同一个位置。哈哈,我从来没有想到GC会将它重新定位到同一个地址。谢谢,这一切都是有道理的。 >>> class foo(object): ... def test(s): ...

它们在运行时绑定;每次访问对象上的属性都会重新绑定该方法。当您将两个方法放在同一行时,它们不同的原因是第一个方法在第二个方法绑定时尚未发布。

换句话说,
id
每次看起来都一样,因为前一个实例在结果打印后立即被gc处理,在这个特定版本的CPython中,内存管理恰好是可以预测的,足以将下一个对象放在同一个位置。哈哈,我从来没有想到GC会将它重新定位到同一个地址。谢谢,这一切都是有道理的。
>>> class foo(object):
...     def test(s):
...         pass
...
>>> a=foo()
>>> a.test is a.test
False
>>> print a.test
<bound method foo.test of <__main__.foo object at 0x1962b90>>
>>> print a.test
<bound method foo.test of <__main__.foo object at 0x1962b90>>
>>> hash(a.test)
28808
>>> hash(a.test)
28808
>>> id(a.test)
27940656
>>> id(a.test)
27940656
>>> b = a.test
>>> b is b
True