Me gusta plantear un NotImplementedError
método para cualquier método que quiera implementar, pero donde aún no he podido hacerlo. Es posible que ya tenga una implementación parcial, pero la antepongo raise NotImplementedError()
porque todavía no me gusta. Por otro lado, también me gusta apegarme a las convenciones, porque esto facilitará que otras personas mantengan mi código, y las convenciones pueden existir por una buena razón.
Sin embargo, la documentación de Pythons para NotImplementedError establece:
Esta excepción se deriva de RuntimeError. En las clases base definidas por el usuario, los métodos abstractos deberían generar esta excepción cuando requieren clases derivadas para anular el método.
Ese es un caso de uso formal mucho más específico que el que describo. ¿Es un buen estilo convencional plantear NotImplementedError
simplemente para indicar que esta parte de la API es un trabajo en progreso? Si no, ¿hay una forma estandarizada diferente de indicar esto?
Respuestas:
Vale la pena señalar que, si bien la documentación de Python proporciona un caso de uso (y probablemente el canónico) para esta excepción, no excluye específicamente su uso en otros escenarios.
Consideraría apropiado generar una excepción NotImplementedError si aún no ha anulado un método en una clase base (para satisfacer la "interfaz").
Una verificación superficial en Google sugiere que las personas entenderán lo que quieres decir si usas la excepción de esta manera. No hay efectos secundarios o consecuencias involuntarias que yo sepa; el método simplemente arrojará una excepción si se llama, y arrojará una excepción que todos entiendan bien.
La documentación para Python 3 refleja este uso exacto:
fuente
Esto se entenderá, ya sea que lo haga o no debe depender de las convenciones locales (de equipo o empresa). Tenga en cuenta que tiene menos sentido en el contexto de TDD, ya que la PRUEBA debe ser lo que determina que el método no se implementa.
La versión corta es: úsela si usted y su equipo lo consideran apropiado.
fuente
Parece que
NotImplementedError
generalmente se está generando para los desarrollos de características de Python, como el siguiente:Documetation
Fuente
Collections.Counter.fromkeys
fuente