Non è possibile definire più inizializzatori in Python (come evidenziato nei commenti, __init__
is not really a constructor), ma è possibile definire i valori di default, per esempio:
def __init__(self, size=8):
self.buffer = [1] * size
Nel codice di cui sopra, un buffer di dimensioni 8 è creato per impostazione predefinita, ma se viene specificato un parametro dimensione, verrà utilizzato il parametro.
Ad esempio, supponiamo che l'inizializzatore si trovi in una classe denominata Example
. Questa chiamata creerà una nuova istanza della classe con un tampone di formato 8 (default):
e = Example()
considerando questa chiamata creerà una nuova istanza di un buffer di dimensione 10:
e = Example(10)
In alternativa, è possibile chiamare il costruttore in questo modo:
e = Example(size=10)
fonte
2011-12-04 16:38:53
Non hai due costruttori, il secondo sovrascrive il primo. – u0b34a0f6ae