diesmal stehe ich vor einem etwas komplizierten und verzwickten Problem. Aber ich versuche, es so einfach wie möglich zu erklären:
Ich habe eine Oberklasse und mehrere Unterklassen, die alle von dieser Oberklasse abgeleitet sind. Alle Unterklassen besitzen jeweils eine Methode mit demselben Namen. Ich möchte nun die Oberklasse mit einem bestimmten Argument aufrufen. Je nachdem, welches Argument ich angegeben habe, soll nun aber keine Instanz der Oberklasse gebildet werden, sondern eine Instanz einer bestimmten Unterklasse. Ich versuche mal, das anhand eines Minimalbeispiels bildlich darzustellen:
Code: Alles auswählen
class Oberklasse(object):
# Diese Oberklasse beinhaltet noch einige Methoden,
# auf die die Unterklassen zugreifen können.
# Diese Methoden sind hier jetzt unwichtig.
class Unterklasse_1(Oberklasse):
# Jede Unterklasse besitzt eine Methode mit diesem Namen:
def methode_x(self):
# ...
class Unterklasse_2(Oberklasse):
def methode_x(self):
# ...
Code: Alles auswählen
# Bei Angabe von "argument_A" soll eine Instanz von Unterklasse_1 erzeugt werden
instanz_A = Oberklasse("argument_A")
# Bei Angabe von "argument_B" soll eine Instanz von Unterklasse_2 erzeugt werden
instanz_B = Oberklasse("argument_B")
# methode_x() soll dann jeweils die Methode der entsprechenden Unterklasse sein
instanz_A.methode_x()
instanz_B.methode_x()

Ich glaube, dass die __new__-Methode hier angebracht ist, allerdings kapiere ich nicht ganz, wie die funktioniert. Bevor ihr übrigens nach dem Sinn fragt: Glaubt mir, es hat einen Sinn.

Vielen Dank im Voraus für jeden Vorschlag.
