More __init__ methods

Tim Golden mail at timgolden.me.uk
Thu Nov 6 16:58:45 CET 2008


Mr.SpOOn wrote:
> Hi,
> 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.

TJG



More information about the Python-list mailing list