downcasting problem

Emmanuel Surleau emmanuel.surleau at gmail.com
Mon Oct 25 14:42:45 EDT 2010


> Hi everybody,
> 
> I need to downcast an object, and I've read repeatedly that if you
> need to downcast, you did something wrong in the design phase. So,
> instead of asking how do you downcast in python, let me explain my
> situation.
> 
> I have a 2-pass parser. 1st pass ends up with a bunch of superclass
> object, and 2nd pass is supposed to downcast those to one of
> subclasses so I can work with them.
> 
> Details:
> 
> I have a file full of lines which I parse into Line objects. I also
> have two subclasses of Line, namely Individual and Family. Constructor
> of both subclasses needs all Line objects in the file to be
> constructed, so I cannot construct subclass objects in the first pass.
> 
> The Python way of doing this (as I understand it) would be to wrap a
> subclass around Line and have the Line object as an attribute of a
> subclass. Now, this obviously breaks polymorphism and I now have to
> reimplement all of Line's classes in subclasses. Although
> reimplementation is simple (def method(self): return
> self.line.method()), that way of doing things is just not elegant.

> So, is there any more elegant solution to my problem?

Why not have an abstract Line class with your Line methods, a SimpleLine (your 
current Line class, extends AbstractLine), and IndividualLine and FamilyLine 
(both extending AbstractLine)?

Cheers,

Emm



More information about the Python-list mailing list