overriding methods - two questions
davisn90210 at gmail.com
davisn90210 at gmail.com
Fri Nov 16 15:29:09 EST 2007
On Nov 16, 11:35 am, Donn Ingle <donn.in... at gmail.com> wrote:
> >This may help (on an old Python version):
> >>>> class Sam: pass
> >>>> class Judy:
> > ... def foo(self): pass
> > ...
> >>>> children = [Sam(), Judy(), Sam()]
> >>>> for child in children: hasattr(child, "foo")
> > ...
> > False
> > True
> > False
>
> That's not what my tests are showing. While Sam has no foo, it's coming from
> (in my OP) Child (which is the parent class), so hasattr(Sam(),"foo") is
> returning True.
>
> /d
But also in your OP: "I want to run the foo() method for each one that
*has* a foo() method ...." So hasattr(child, "foo") really does
answer the question as posed, even if it's not really what you want.
I am curious as to why you want to go through such contortions. What
do you gain. What happens, for example, if a subclass of Judy is
passed in that does not override foo? Should foo be called in that
case or not?
--Nathan Davis
More information about the Python-list
mailing list