Ich kann keine endgültige Antwort darauf finden. Soviel ich weiß, kann man nicht mehrere __init__
Funktionen in einer Python-Klasse. Wie kann ich dieses Problem also lösen?
Angenommen, ich habe eine Klasse namens Cheese
mit dem number_of_holes
Eigentum. Wie kann ich zwei Möglichkeiten zur Erstellung von Käseobjekten haben...
- Einer, der eine Reihe von Löchern wie dieses nimmt:
parmesan = Cheese(num_holes = 15)
. - Und eine, die keine Argumente benötigt und nur die
number_of_holes
Eigentum:gouda = Cheese()
.
Mir fällt nur eine Möglichkeit ein, dies zu tun, aber das erscheint mir umständlich:
class Cheese():
def __init__(self, num_holes = 0):
if (num_holes == 0):
# Randomize number_of_holes
else:
number_of_holes = num_holes
Was sagen Sie dazu? Gibt es einen anderen Weg?
11 Stimmen
Ich denke init ist kein Konstruktor, sondern ein Initialisierer. neu wäre ein Konstrukteur
0 Stimmen
Verwandt (kein Duplikat): Wie kann ich doppelte Methodennamen in einer Python-Klasse erkennen?