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

Reply via email to