Moving Beyond Factories in Python
<p>Coming to Python from Java, I've been told that factories are not Pythonic. Thus, I'm looking for <strike>a</strike> the Python way to do something like the following. (I'm oversimplifying my goal so that I don't have to describe my entire program, which is very complicated).</p>

<p>My script will read in names of people (along with some information about them) and, from this, construct objects of type Person. The names may be repeated, and I only want one Person instance per name. These People may also belong to subclasses Man and Woman.</p>

<p>One way to do this would be to create a PersonFactory which would either return a newly instantiated Man or Woman <em>or</em> a reference to the previously instantiated Man/Woman with the same name. The other would be to create a set of all Person objects and check each time for the presence of a Person with the given name before instantiating a new object. Neither approach strikes me as Pythonic, though. The first seems a bit too cumbersome for Python (creating a whole class just to handle creation of another object? Really?) and the second will get expensive quickly, as I have a lot of names to process.</p>
