BioSQL erweitern, wie? Vererbung?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

RedSharky hat geschrieben:Ich habe eine Lösung gefunden:

Code: Alles auswählen

class Fahrzeug (modulname.Fahrzeug): # Erzeugt eine neue Klasse aus der Alten
    is_new = True;

modulname.Fahrzeug = Fahrzeug # Ersetzt die alte klasse mit der Neuen - Voila
Was ist daran eine Lösung? Wieso benutzen die vorhandenen Scripte jetzt Deine neue Klasse? Magisches Wissen? ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

Bei mir funktioniert es. Sagen wir, weitere Skripte/Module erwarten modulname.Fahrzeug vor zufinden. Dann können sie das auch weiterhin, nur liegt dort nun die erweiterte Klasse.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@Hyperion Die letzte Zeile hast du schon gesehen?

Diese Lösung nutzt monkey patching, genau dass wovon BlackJack in seinem Post abgeraten hat.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

DasIch hat geschrieben:@Hyperion Die letzte Zeile hast du schon gesehen?

Diese Lösung nutzt monkey patching, genau dass wovon BlackJack in seinem Post abgeraten hat.
Ja. Aber das funktioniert ja nur, wenn das im selben Script steht, welches dann ausgeführt werden soll?!? Und genau das wollte der OP ja ursprünglich vermeiden, damit er nicht zu viel Code anfassen muss.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Hyperion hat geschrieben:
DasIch hat geschrieben:@Hyperion Die letzte Zeile hast du schon gesehen?

Diese Lösung nutzt monkey patching, genau dass wovon BlackJack in seinem Post abgeraten hat.
Ja. Aber das funktioniert ja nur, wenn das im selben Script steht, welches dann ausgeführt werden soll?!?
Der Patch muss ausgeführt werden bevor die Klasse genutzt wird, dass ist etwas problematisch wenn andere Module from-importe Machen, diese Module müssen ebenfalls nach dem Patch importiert/ausgeführt werden. Allerdings funktioniert es durchaus interpreterweit.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

DasIch hat geschrieben: Der Patch muss ausgeführt werden bevor die Klasse genutzt wird, dass ist etwas problematisch wenn andere Module from-importe Machen, diese Module müssen ebenfalls nach dem Patch importiert/ausgeführt werden. Allerdings funktioniert es durchaus interpreterweit.
Eben. Und der OP hat wohl mehrere fertige Scripte (die wohl Bestandteil des Paketes sind), die er nutzt. Also muss er ja nun diese Scripte anfassen und mittels des imports seines eigenen Moduls das alte überschreiben. Genau das wollte er urspünglich nicht - daher meine Nachfrage ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

Danke für die vielen klugen Kommentare. Ich habe mal wieder viel gelernt. :D
Antworten