Als Uriel says ist es für eine Methode in einer abstrakten Klasse gedacht, die in der Kindklasse implementiert werden soll, aber auch zum Anzeigen eines TODO verwendet werden kann.
Python 3 kommt mit einer Alternative für den ersten Anwendungsfall: Abstract Base Classes. Diejenigen, die Hilfe, die abstrakte Klassen:
class C(abc.ABC):
@abstractmethod
def my_abstract_method(self, ...):
...
Wenn C
instanziiert wird, erhalten Sie eine Fehlermeldung erhalten, weil my_abstract_method
abstrakt ist. Sie müssen es in einer untergeordneten Klasse implementieren.
TypeError: Can't instantiate abstract class C with abstract methods my_abstract_method
Subclass C
und my_abstract_method
implementieren.
class D(C):
def my_abstract_method(self, ...):
...
Jetzt können Sie D
instanziieren.
C.my_abstract_method
muss nicht leer sein. Es kann von unter Verwendung super()
aufgerufen werden.
Ein Vorteil gegenüber NotImplementedError
ist, dass Sie eine explizite Exception
zur Instanziierungszeit erhalten, nicht zur Zeit des Methodenaufrufs.
Cross-site Betrüger: https://softwareengineering.stackexchange.com/q/231397/110531 – jonrsharpe
Ich würde sagen: Wenn es das ["Prinzip der geringsten Verwunderung" erfüllt (https://en.wikipedia.org/wiki/Prinzip der Leerbesetzung). – MSeifert