kyo> Can someone explain why the id() return the same value, and why kyo> these values are changing?
Instance methods are created on-the-fly. In your example the memory associated with the a.f bound method (not the same as the unbound method A.f) is freed before you reference a.g. That chunk of memory just happens to get reused for the bound method associated with a.g. Here's a demonstration: % python Python 2.5a0 (#77, May 14 2005, 14:47:06) [GCC 3.3 20030304 (Apple Computer, Inc. build 1671)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> class A(object): ... def f(): pass ... def g(): pass ... >>> a = A() >>> x = a.f >>> y = a.g >>> id(x) 17969240 >>> id(y) 17969440 >>> id(a.f) 17969400 >>> id(a.g) 17969400 Skip -- http://mail.python.org/mailman/listinfo/python-list