Ich arbeite an einer Art Lib, und aus einem seltsamen Grund habe ich diesen Fehler.
Sorry konnte nicht einfach kopieren und einfügen
Ich ging davon aus, dass der folgende Code funktioniert
test.py
%Vor%In der Python-Shell
%Vor%Warum für mein Roster Modul habe ich diesen Fehler
%Vor%Vielen Dank im Voraus
Ihr Problem kommt, weil Sie die abstrakten Methoden in Ihrer abstrakten Basisklasse mit vorangestelltem __
(doppelter Unterstrich) definiert haben. Dies führt dazu, dass Python zu der Zeit name mangling ausführt der Definition der Klassen.
Die Namen der Funktion ändern sich von __json_builder
nach _Base__json_builder
oder __xml_builder
nach _Base__xml_builder
. Und das ist der Name, den Sie in Ihrer Unterklasse implementieren / überschreiben müssen.
Um dieses Verhalten in Ihrem Beispiel zu zeigen -
%Vor%Wenn ich die Implementierung in die folgende ändern, funktioniert es
%Vor% Aber das ist sehr langwierig. Vielleicht möchten Sie darüber nachdenken, ob Sie Ihre Funktionen wirklich mit __
(doppelter Unterstrich) definieren wollen. Sie können mehr über hier .
Tags und Links python abstract-class abc six