Quiero configurar una clase que se cancelará durante la creación de la instancia en función del valor del argumento pasado a la clase. He intentado un par de cosas, una de ellas es elevar un error en el método __new__
:¿Cómo cancelo la creación de instancia de objeto en Python?
class a():
def __new__(cls, x):
if x == True:
return cls
else:
raise ValueError
Esto es lo que estaba esperando que sucedería:
>>obj1 = a(True)
>>obj2 = a(False)
ValueError Traceback (most recent call last)
obj1
existe, pero no lo hace obj2
.
¿Alguna idea?
¿no debería usted anular '__init __ (self, ...)'? –
@matt b. No es tan semántico si la intención es detener la creación de objetos. Sin embargo funciona. – aaronasterling
@AaronMcSmooth: ¿Por qué sería preferible plantear una excepción en '__new__' que plantear una en' __init__'. El resultado me parece igual y '__init__' es donde va el resto del código de inicialización. ¿Por qué no debería ir esto también? – Arlaharen