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