9
>>> 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
4

1 に答える 1

7

それらは実行時にバインドされます。オブジェクトの属性にアクセスすると、メソッドが毎回新たに再バインドされます。両方を同じ行に置くと異なる理由は、最初のメソッドが 2 番目のメソッドがバインドされるまでに解放されていないためです。

于 2011-03-21T22:52:19.823 に答える