Pregunta

La función __init__() se llama cuando se crea objeto. ¿Está bien para llamar a una función de objeto __init__() nuevo, después de su sido creados?

instance = cls(p1=1, p2=2)
# some code
instance.__init__(p1=123, p2=234)
# some more code
instance.__init__(p1=23, p2=24)

¿por qué alguien quiere __init__() llamada sobre un objeto que ya está creado?

buena pregunta. yo quiero volver a inicializar los campos de la instancia.

¿Fue útil?

Solución

bien sea para __init__ llamado más de una vez en un objeto, siempre y cuando __init__ se codifica con el efecto que desea obtener (sea lo que sea). Un caso típico donde ocurre (! Así que mejor __init__ código de forma apropiada -) es cuando el método __new__ de su clase devuelve una instancia de la clase: que ¿Tiene causa __init__ para ser llamado en la instancia devuelta ( para lo que podría ser el segundo o XX, el tiempo, si se mantiene "reciclar" los casos a través de su __new__ -).

Otros consejos

Puede, pero es un poco de romper lo __init__ se pretende hacer. Una gran cantidad de Python es en realidad la convención, por lo que también podría seguir a continuación y esperar __init__ que sólo se llama una vez. Me gustaría recomendar la creación de una función llamada init o reset o algo que establece las variables de instancia, el uso que cuando se desea restablecer el ejemplo, y tienen __init__ simplemente llame init. Esto sin duda se parece más sensata:

x = Pt(1,2)
x.set(3,4)
x.set(5,10)

Por lo que yo sé, que no causa ningún problema ( editar como lo sugiere el uso kosher de super(...).__init__(...)), pero creo que tener un método reset() y decir que es tanto en __init__() y cuando tendrá que restablecer sería más limpio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top