Vererbung von einer benannten Tupel-Basisklasse - Python

11

Diese Frage stellt das Gegenteil von fest, das namedtuple von einer Basisklasse geerbt hat in Python , wo es darum geht, eine Unterklasse von einem Nametuple zu erben und nicht umgekehrt.

Bei normaler Vererbung funktioniert das:

%Vor%

[out]:

%Vor%

Aber wenn die Basisklasse ein namedtuple ist:

%Vor%

[out]:

%Vor%

Die Frage, ist es möglich, Nametuples als Basisklasse in Python zu erben? Ist das so?

    
alvas 22.02.2017, 08:10
quelle

2 Antworten

14

Sie können, aber Sie müssen __new__ überschreiben, das implizit vor __init__ :

aufgerufen wird %Vor%

Aber d wird nur ein unabhängiges Attribut sein!

%Vor%     
schwobaseggl 22.02.2017, 08:24
quelle
4

Ich denke, Sie können erreichen, was Sie wollen, indem Sie alle Felder einbeziehen im ursprünglichen benannten Tupel, dann die Anzahl der Argumente anpassen mit __new__ wie schwobaseggl oben suggeriert. Zum Beispiel, um zu adressieren Max-Fall, wo einige der Eingabewerte berechnet werden sollen anstatt direkt geliefert zu werden, funktioniert Folgendes:

%Vor%     
TimH 19.07.2017 14:30
quelle