class objects, method objects, function objects

7stud bbxx789_05ss at yahoo.com
Mon Mar 19 13:21:42 EDT 2007


Hi,

Thanks for the responses.  I understand that python automatically
sends 'self' to a member function, i.e. self gets prepended to the
argument list.  I guess I am having trouble with this statement:
----
When the method object is called with an
argument list, it is unpacked again, a new argument list is
constructed from the instance object and the original argument list,
and the function object is called with this new argument list.
---
because I don't quite understand the timing.  The "unpacked again"
part confuses me. If I have this code:

class MyClass:
        def g(self, name):
                print "Hello " + name

x = MyClass()
x.g("GvR")

here is what happens when I try to follow the sequence of events GvR
describes:
----------------
When an instance attribute is referenced that isn't a data attribute,
its class is searched.

x.g("GvR") ==> 'g' is not a data attribute, so class is searched.

If the name denotes a valid class attribute that is a function object,
a
method object is created by packing (pointers to) the instance object
and the function object just found together in an abstract object:
this is the method object.

==>method object is created

When the method object is called with an
argument list,

x.g("GvR") ==> I think I'm both "referencing an instance attribute"
and calling the method object with an argument list

it(the method object) is unpacked again, a new argument list is
constructed from the instance object and the original argument list,
and the function object is called with this new argument list.

??




More information about the Python-list mailing list