Geben Sie Hinting für Objekte des Typs ein, der definiert wird

8

Ich bekomme den Fehler:

%Vor% %Vor%

Ich bin mir sicher, dass dies ein bekanntes Paradigma ist, da es wie ein ziemlich häufiges hierarchisches Klassennutzungs-Problem aussieht (eine selbst-referenzierende Klasse). Ich weiß, ich könnte den Typ von its_parent_org_unit ändern, um object zu sein, und es funktioniert, aber das scheint wie das Falsche zu tun, vor allem, weil es meine Fähigkeit, Typen in meinen Aufrufen zu überprüfen. Wenn its_parent_org_unit geändert wurde, um ein Typ object zu sein, bekomme ich die richtigen Ergebnisse:

%Vor%

Ich bin offen für Gedanken und Vorschläge. Was ist der "pythischste" Weg, um so etwas zu tun?

PS: Wie lautet der Name für diese Art von "self referencing class" Paradigma / Problem, mit dem ich andere Vorschläge nachschlagen könnte?

    
R. G. Abbott 25.02.2016, 03:22
quelle

1 Antwort

14

Ihr Problem ist, dass Sie Typhinweise verwenden wollen, aber Sie wollen, dass diese Klasse selbst Argumente ihres eigenen Typs annehmen kann.

Die Typhinweise PEP (0484) erklärt, dass Sie die Zeichenfolgenversion des Typs verwenden können Name als Forward-Referenz . Das Beispiel besteht aus einer Tree Datenstruktur, die diesem OrgUnit one bemerkenswert ähnlich klingt.

Zum Beispiel funktioniert das:

%Vor%

In Python 3.7 können Sie die verschobene Auswertung von Annotationen mit from __future__ import annotations aktivieren. . Dies speichert Annotationen automatisch als Strings, anstatt sie zu bewerten, was Sie tun können

%Vor%

Dies ist der Standard in Python 4.0.

    
Brian Cain 25.02.2016, 03:41
quelle

Tags und Links