Angenommen, ich habe eine Basisklasse mit nicht implementierten Methoden wie folgt:
%Vor%Nehmen wir nun an, einer meiner Kollegen verwendet die Polygon-Klasse, um eine Unterklasse wie folgt zu erstellen:
%Vor%(H / Sh) e hat vergessen, die Methode area () zu implementieren.
Wie kann ich die Unterklasse zwingen, die Methode area () des Elterns zu implementieren?
Dies könnte Ihre Elternklasse sein:
%Vor%obwohl das Problem nur zur Laufzeit erkannt wird, wenn eine der Instanzen der untergeordneten Klassen versucht, eine dieser Methoden aufzurufen.
Eine andere Version ist abc.abstractmethod
.
Sie können Circle
nicht instanziieren, ohne dass alle Methoden implementiert sind.
Dies ist die python 3
-Syntax; in python 2
müssten Sie
Beachten Sie auch, dass es für die binären Sonderfunktionen __eq__(), __lt__(), __add__(), ...
besser ist, return NotImplemented
anstatt% co_de zu erhöhen %.
Sie können die NotImplementedError
Ausnahme in der Basisklassenmethode auslösen.
Sie können auch @abc.abstractmethod
verwenden, aber dann müssen Sie die Metaklasse deklarieren abc.ABCMeta
zu sein, was Ihre Klasse abstrakt machen würde. Weitere Informationen zum Modul abc
Tags und Links python inheritance method-overriding