many constructors in a class?
Steven D'Aprano
steve at pearwood.info
Thu Aug 15 03:23:34 EDT 2013
On Wed, 14 Aug 2013 14:16:31 +0000, climb65 wrote:
> Hello,
>
> here is a small basic question :
>
> Is it possible to have more than one constructor (__init__ function) in
> a class? For instance, to create an object with 2 different ways? If my
> memory is good, I think that with C++ it is possible.
>
> Thanks for your answer.
Yes it is. The built-in type dict is a good example, there is the regular
default constructor[1] that you can call like this:
dict([('a', 100), ('b', 200)], spam=1, ham=2, eggs=3)
Plus there is an alternative constructor that you can call like this:
dict.fromkeys(['a', 'b', 'spam', 'ham', 'eggs'])
The way to create an alternative constructor is to use a class method:
def MyDict(dict):
@classmethod
def fromkeys(cls, keys):
...
If you need further details, please ask.
[1] The constructor is __new__, not __init__. __init__ is called to
initialise the instance after __new__ constructs it.
--
Steven
More information about the Python-list
mailing list