Comme Uriel dit, il est destiné pour une méthode dans une classe abstraite qui doit être mis en œuvre dans la classe enfant, mais peut être utilisé pour indiquer des choses à faire aussi bien.
Il est une alternative pour le premier cas d'utilisation: les Classes de Base Abstraites. Ces aider à la création de classes abstraites.
Voici un Python 3 exemple:
class C(abc.ABC):
@abstractmethod
def my_abstract_method(self, ...):
...
Lors de l'instanciation C
, vous obtiendrez une erreur, car my_abstract_method
est abstrait. Vous avez besoin pour mettre en œuvre dans une classe enfant.
TypeError: Can't instantiate abstract class C with abstract methods my_abstract_method
Sous-classe C
et de mettre en oeuvre my_abstract_method
.
class D(C):
def my_abstract_method(self, ...):
...
Maintenant, vous pouvez instancier D
.
C.my_abstract_method
ne doit pas être vide. Il peut être appelé à partir d' D
l'aide super()
.
Un avantage de cela plus de NotImplementedError
est que vous obtenez un explicite Exception
lors de l'instanciation du temps, pas à l'appel de la méthode du temps.