classes riddle
Dave Angel
davea at ieee.org
Mon Oct 19 15:50:27 EDT 2009
inhahe wrote:
> Can somebody clear this up for me?
> ------
>
> Class B(A): def __init__(self, a) A.__init__(a) self.a = a a = A() ba = B(a)
> bc = B(a) bd = B(a) ------ I'm not sure what A.__init__ here does. I would
> think its __init__ is designed specifically to run once for any given
> object.. so i'm not sure what happens. and if A calls self.blah(), which
> instance of B which overrides blah gets called?
>
>
This won't run, for a pile of reasons, starting with formatting. Try
posting properly indented code, with capitalization correct, and without
missing colons.
But your first question isn't too hard. The __init__() method of each
class runs when an instance (object) of that class is created. But if
you inherit from another class, and that class needs arguments, you have
to call its __init___() method as well. You use the A. qualifier so
that the compiler knows which __init__ method to invoke.
Your second question doesn't make sense. "A calls self.blah()" ??
you seem to be saying that the class calls some method?
"which instance... gets called" ??? Instances don't get called.
Perhaps your question is what happens when a method of A calls another
method of A, where the same method name occurs (override) in B. The
answer to which instance of B is used depends simply on which instance
of B was used for the original method call. And in fact which method is
called also depends on whether the instance is of type A or type B.
Best to give definitions of two classes (with proper indentation), where
A has two methods, and B only overrides one of them. Then you can state
your question more concretely, or even try it to see. In fact, by the
time you spell it out completely, the answer could very well be obvious
to you.
DaveA
More information about the Python-list
mailing list