[Python-es] declarar en una clase todas las variables en __init__() o no?
kldgarrido
kldgarrido en gmail.com
Sab Ago 6 01:41:12 CEST 2011
Si amigo te has explicado muy bien. Igualmente estoy de acuerdo contigo.
Muchas Gracias por tu mensaje.
On Sat, 2011-08-06 at 01:19 +0200, Andrey Antoukh wrote:
> En mi opinión, dependiendo del caso, el hecho de definir todo en el
> __init__ , no es necesario, ya que puedes definirlas como atributos de
> la clase. (hablando de variables claro esta...)
>
> Hay que tener en cuenta que esos atributos se quedan asignados en el
> momento de la creacion de la clase y no en el momento de creacion de
> la instancia. Lo que hace que si tienes 10 variables, no tengas que
> hacer 10 asignaciones por casa instancia.
>
> Las variables que tu asignes a self desde __init__ deben ser fruto de
> alguna ejecucion que solo podria ser obtenida en el momenot de
> ejecucion. Y como ya te lo han comentado, si no lo necesitas usar
> desde otros metodos a posteriori de la creacion de la instancia... no
> la asignes a la clase. Ya que en caso de que fueran variables de poco
> uso y la asignes a la clase, permaneceran en memoria hasta que la
> instancia fuera eliminada por el GC, que en otro caso, en teoria
> deberian ser eliminadas por el GC, una vez dejaras de necesitarlas, es
> decir que acabe la ejecucion de tu metodo.
>
> No se si me he explicado con esto ultimo, pero al menos lo he intentado :)
>
> Andrei.
>
> 2011/8/6 Ricardo Cárdenes <ricardo.cardenes en gmail.com>:
> > 2011/8/5 kldgarrido <kldgarrido en gmail.com>:
> >> Hola Amigos.
> >>
> >> Me gustaría consultarles algo:
> >>
> >> A la hora implementar una clase consideran estético para python declarar
> >> todas las variables que se van utilizar en "def __init__():" o declarar
> >> según los métodos que la utilicen.
> >>
> >> por ejemplo:
> >> Para crear una variable self.b que se va a imprimir por un método
> >> llamado self.imprimir()
> >
> > El caso sería preguntarse: ¿es necesario almacenar la variable para
> > usos futuros? Si es así, seguramente va a ser usada en algún otro
> > método (para actualizar su valor, por ejemplo) y en ese caso es
> > conveniente que esté creada desde el principio (en __init__), porque
> > no se puede predecir el orden en que van a ser llamados los métodos
> > que trabajan con la variable.
> >
> > En caso de que la variable sea de "usar y tirar", sólo dentro del
> > método que la usa, ¿para qué asignarla a self?
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > http://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> >
>
>
>
Más información sobre la lista de distribución Python-es