En general, ¿es razonable devolver None desde un método __new__
si el usuario de la clase sabe que a veces el constructor evaluará a None?¿Está bien que devuelva None desde __new__?
La documentación no implica que sea ilegal, y no veo ningún problema inmediato (ya que no se va a llamar al __init__
, ¡Ninguno no es una instancia de la clase personalizada en cuestión!). Pero lo que me preocupa
- si podría tener otros problemas imprevistos
- si se trata de una buena práctica de programación para tener constructores volver Ninguno
Ejemplo específico:
class MyNumber(int):
def __new__(cls, value): # value is a string (usually) parsed from a file
if value == 'N.A.':
return None
return int.__new__(cls, value)
o mejor dicho, _will_ work. Intentar hacer casi cualquier cosa interesante con el resultado _no será_. Pero eso es probablemente parte del punto. – aaronasterling