星期二, 一月 08, 2008

Python bound/unbound methods

python class methods identity 中讨论过 instances 的 attributes/methods 的内存使用的问题,关于这一点,有另外一个说法,就是 Python 的 bound/unbound methods。

instances 的 methods 都是 bound methods,这些 methods 只有在实际调用这个方法的时候才会创建具体的 method 对象,执行结束后就会 destroy。从 python-list 上得到的回复是,虽然两个 id() 给出的值是一样的,但那只不过是一个误解,因为在前一个 instance 的 method 调用结束后,后一个 instance 的 method 会重复利用这段内存,结果造成 id() 的返回值一样。而在前面的讨论中,我们已经知道 is 是利用 im_self 来查看标识的,所以 is 测试返回 False。

没有评论: