More __init__ methods
mail at timgolden.me.uk
Thu Nov 6 16:58:45 CET 2008
> I know there can be only one __init__ method (at least, I think).
> Often I need an object to be created in different ways, for example
> passing a string as argument, or an integer, or another object. To
> achieve this I put the default value of the arguments to None and then
> I some if...elif inside the __init__.
> Is this a good practice? It actually works, but sometimes I think that
> in this way the __init__ method can become too complicated, for
> example when an object can be created using more than one argument and
> in different combinations.
My own approach -- and I don't think I'm unique in this -- is
to use class methods called things like "from_string" or "from_date",
possibly with a convenience function which tries to guess from a
passed-in parameter which of them is to be used.
More information about the Python-list