Maison >développement back-end >Tutoriel Python >Solution à NotImplementedError()
Dans python, la raison pour laquelle NotImplementedError() est lancée dans Tornado peut être due au fait qu'une méthode ou une interface abstraite n'est pas implémentée. Ces méthodes ou interfaces sont déclarées dans la classe parent mais non implémentées dans la classe enfant. Les sous-classes doivent implémenter ces méthodes ou interfaces pour fonctionner correctement.
La façon de résoudre ce problème est d'implémenter la méthode abstraite ou l'interface déclarée par la classe parent dans la sous-classe.
Si vous utilisez une classe pour hériter d'une autre classe et que vous voyez cette erreur, vous devez implémenter toutes les méthodes abstraites déclarées dans la classe parent dans la classe enfant.
Si vous utilisez une interface et que vous voyez cette erreur, vous devez implémenter toutes les méthodes déclarées dans l'interface dans la classe qui implémente l'interface.
Si vous n'êtes pas sûr des méthodes à implémenter, vous pouvez consulter la documentation ou le code source de la classe ou de l'interface parent.
Il convient de noter que si plusieurs méthodes abstraites sont déclarées dans la classe ou l'interface parent, toutes ces méthodes doivent être implémentées dans la sous-classe pour résoudre cette erreur.
Oui, ce qui suit est un exemple simple qui montre comment implémenter la méthode abstraite déclarée par la classe parent dans une classe enfant.
from abc import ABC, abstractmethod class Parent(ABC): @abstractmethod def my_abstract_method(self): pass class Child(Parent): def my_abstract_method(self): print("I am implementing my_abstract_method.") # This will work c = Child() c.my_abstract_method()
Dans le code ci-dessus, la classe parent Parent déclare une méthode abstraite nommée my_abstract_method. Dans la sous-classe Child, nous implémentons cette méthode. Ainsi, lorsque nous créons un objet Child et appelons my_abstract_method, il affichera "J'implémente my_abstract_method."
Encore une fois, voici un exemple simple montrant comment implémenter une méthode déclarée dans une interface dans une classe
from typing import List class MyInterface: def my_method(self,n:int) -> List[int]: pass class MyImplementation(MyInterface): def my_method(self,n:int) -> List[int]: return [i for i in range(n)] # this will work i = MyImplementation() print(i.my_method(5)).
Dans le code ci-dessus, une méthode nommée my_method est déclarée dans la classe MyInterface, et cette méthode est implémentée dans la classe MyImplementation. Ainsi, lorsque nous créons un objet MyImplementation et appelons my_method, il renverra une liste de longueur n.
En bref, ces deux exemples montrent comment implémenter les méthodes déclarées dans la classe parent et l'interface dans la sous-classe et la classe d'implémentation, afin que l'erreur NotImplementedError puisse être évitée
En développement réel, l'erreur NotImplementedError peut non seulement Cela est simplement dû à la non-implémentation de la méthode ou de l’interface abstraite. Cela peut être dû à une mauvaise conception ou à une mauvaise implémentation du code.
Par exemple, dans certains cas, vous pouvez remplacer une certaine méthode dans une classe, et l'implémentation de cette méthode peut générer NotImplementedError dans certains cas. Cette situation peut être due au fait que certaines conditions ne sont pas gérées correctement.
Une autre erreur courante est que lors de l'utilisation d'une bibliothèque tierce, certaines méthodes ou classes de la bibliothèque peuvent générer NotImplementedError pour certaines raisons. Dans ce cas, vous devez généralement consulter la documentation ou le code source pour comprendre la cause spécifique de cette erreur. .
En résumé, NotImplementedError est une erreur courante, mais elle peut avoir de nombreuses causes différentes. Par conséquent, lors de la résolution de cette erreur, vous devez combiner l’implémentation spécifique du code et le contexte de l’erreur pour en trouver la cause.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!