|| at Sep 18, 2008 at 7:55 am
Karl Kobata wrote:
I am new to python and am wondering. When I create a class, with ?def?
functions and if this class is instantiated say 50 times. Does this
mean that all the ?def? functions code within the class is duplicated
for each instance?
Can someone give me a short and simple answer as to what happens in python?
To expand slightly on Gary's answer. Dotted names -- ob.attr -- are
typically (but not always) resolved as follows: does ob have attribute
attr? If yes, get the corresponding object. If no, does type(ob) have
attribute attr? If yes, get the corresponding object. In no, look in
the baseclasses of type(ob) in some order (details not important here).
So, instance methods are class attributes and instance.method will
resolve to the method attribute of type(instance) -- assuming that the
instance does not have an attribute of the same name. Lookup for
special methods (with reserved __xxx__ names) may go directly to the
class and never look at the instance attributes.