>>> 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
9
A
回答
7
它們在運行時綁定;每次訪問對象上的屬性都會重新引用該方法。當你將兩者都放在同一行時,他們不同的原因是第一個方法在第二個方法被綁定時沒有被釋放。
+8
換句話說,'id'每次看起來都是一樣的,因爲之前的實例在打印結果後立即被gc'd處理過,並且該特定版本的CPython中的內存管理恰好足夠可預測,以使下一個對象處於相同的狀態地點。 – delnan 2011-03-21 23:02:45
+0
哈哈它從來沒有想過我GC將重新定位在同一地址。謝謝這一切都是有道理的。 – 2011-03-23 03:45:03
相關問題
- 1. 爲什麼要在python中使用類方法實例方法
- 2. 爲什麼靜態方法在單例實例中不可用?
- 3. 爲什麼要爲python對象設置綁定方法創建循環引用?
- 4. Python中相互引用的實例
- 5. 如何在Python中查找綁定方法的實例?
- 6. 什麼是在Python中使用'_rsub__'方法的典型實例?
- 7. 爲什麼實例方法不能覆蓋靜態方法
- 8. 爲什麼python super不接受實例?
- 9. 類實例相等和不相等
- 10. 爲什麼不能使用類IO的實例方法noecho?
- 11. Python:爲什麼兩個實例使用相同的列表?
- 12. 爲什麼可以傳遞方法引用而不是轉換器實例?
- 13. SendwithUs爲什麼讓你定義實例方法而不是類方法?
- 14. 爲什麼Python不調用實例方法__init __()創建實例,而是調用類提供的__init __()來代替?
- 15. 頂級方法:爲什麼他們成爲Object中的私有實例方法?爲什麼不公開?
- 16. 爲什麼我的Static方法隱藏我的實例方法?
- 17. python 2.6 exceptions.TypeError:未綁定的方法_init_()ESMTP客戶端實例
- 18. 爲什麼Xcode會認爲實例方法是類方法?
- 19. 爲什麼我的release()方法不會喚醒我的實例?
- 20. 爲什麼NSArrayController不通過綁定調用訪問器方法?
- 21. 爲什麼QML引擎多次實例化相同的腳本?
- 22. 爲什麼實例方法的Java方法引用不能被分配到用戶界面
- 23. 兩個python類實例互相引用
- 24. 爲什麼Servlet.service()方法返回void而不是ServletResponse的實例?
- 25. 爲什麼不能實例化Runate方法的委託?
- 26. 爲什麼在Python(2.7.11)中將相同的部分比較爲不相等?
- 27. 這是什麼意思?「在Scala ==和!=方法檢查值相等,而不是檢查引用相等的Java」
- 28. 爲什麼Python類方法裝飾器不能將該方法作爲綁定方法接收?
- 29. Python類方法錯誤 - 綁定需要實例
- 30. 爲什麼在Python中`object`類的實例是不可變的?
對不起,什麼? – Mat 2011-03-21 22:45:39