Hi all,

Thanks for the reply, Lloyd.

Lloyd Kvam said unto the world upon 2005-03-17 20:36:
You want a method in a base class to parse input and create instances of
certain derived classes.

Not quite. One class (Tree) parses a file and creates instances of Node1 and Node2 (derived from Node). None of the Node classes inherit Tree. But I don't think that difference matters for what you suggested. :-)

Your sample code looks like:
if some_condition_on_chunk_contents:
     node = Node1(chunk_contents)
else:
     node = Node2(chunk_contents)

I'd suggest changing the method to use a variable to determine the
class.  Following your pattern of coding:
#Toolkit.py
class Tree:
        node1 = Node1
        node2 = Node2
        ...
class Node1(Node):
        ...

#Application.py
class Tree(Toolkit.Tree):
<SNIP -- same as in Tree immediately above>


if some_condition_on_chunk_contents:
     node = self.node1(chunk_contents)
else:
     node = self.node2(chunk_contents)

This requires that the class constructors be similar enough so that they
take the same parameters.

Happily, the interfaces are identical. :-) (I need different Node classes as the chunk_contents are in different formats, the tasks are the same, modulo differences due to format.)


It is also a manual effort to keep the node
assignments in Tree in sync with the Node classes that you write.  You
also face a similar issue keeping Application.py and Toolkit.py in sync.

Hmm. I think I do see some appeal to the route you suggest, but I'm feeling unhappy about the need to keep multiple things in sync.

I think I will play with this and other alternatives and see what
feels right. Thanks so much for the input :-)

Best to all,

Brian vdB


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor

Reply via email to