mi pregunta es más bien una pregunta de diseño. En Python, si el código en su "constructor" falla, el objeto termina sin definirse. Por lo tanto:¿Existe una mala práctica para ejecutar código en el constructor?
someInstance = MyClass("test123") #lets say that constructor throws an exception
someInstance.doSomething() # will fail, name someInstance not defined.
tengo una situación sin embargo, donde una gran cantidad de código copiado ocurriría si quito el código propenso a errores de mi constructor. Básicamente, mi constructor llena algunos atributos (a través de IO, donde muchas cosas pueden ir mal) a las que se puede acceder con varios captadores. Si eliminé el código del contructor, tendría 10 getters con código de copiar y pegar algo así como:
- ¿Es el atributo realmente establecido?
- hacer algunas acciones IO para llenar el atributo
- devolver el contenido de la variable en cuestión
No me gusta eso, porque todos mis captadores contendrían una gran cantidad de código. En lugar de eso, realizo mis operaciones de IO en una ubicación central, el constructor, y llené todos mis atributos.
¿Cuál es una forma adecuada de hacer esto?
bien, voy a recordar que, yo' Siendo aún nuevo aquí y quiero dar crédito a las personas que pasan su valioso tiempo, tratando de responder mis preguntas, ¡realmente lo aprecio! – Tom
Esta pregunta viene muy lejos de Python e incluso de explicar qué es todo acerca de RAII o por qué podemos/no podemos hacer operaciones en el constructor que pueden generar excepciones. – lispmachine
@Neil Butterworth: esto no es realmente importante ya que puede aceptar otro artículo de mayor calidad más adelante. –