[Python-es] Re: duda acerca de self como argumento de métodos

Milton Galo Patricio Inostroza Aguilera minoztro en gmail.com
Mar Mayo 27 16:38:57 CEST 2008


El día 27 de mayo de 2008 9:21, Milton Galo Patricio Inostroza
Aguilera <minoztro en gmail.com> escribió:
> estimados:
>
>  Ayer durante una presentación en la Universidad me preguntaron por
> qué siempre tiene que ir como primer argumento de un método el
> argumento self, en realidad nunca me lo había cuestionado :-S....bueno
> en realidad es entendible que debe existir una referencia a la
> instancia pero por qué esto debe aparecer "explicitamente" en el
> código que el programador escribe y por qué no simplemente ocultarlo y
> usar un atributo especial como this?...Yo a priori pienso que es por
> facilidad de usabilidad y siempre es mejor "visible" que "oculto y
> mistico".

bueno específicamente me dijeron esto:

"""
la pregunta es saber porque tomaron la decision de dejar el self como
parametro explicito. Modula-3 es un lenguaje de los 80, que viene de
Modula (fin de los 70s), sucesor de Pascal. O sea, nada transcendental
en el reino de los lenguajes OO (comparar con Smalltalk 72/76/80).

en todo lenguaje OO que sirve hoy en dia, el self es un parametro
implicito. No es necesario ponerlo como parametro explicito,
simplemente se puede usar this (Java) o self (Smalltalk) dentro del
cuerpo de un metodo.
"""

>
> Acabo de hacer un código de juguete, es el siguiente:
>
>>>> class test(object):
> ...     def __init__(s):
> ...             s.a = 10
> ...
>>>> testObject = test()
>>>> testObject.a
> 10
>
> Sinceramente a mi no me molesta indicar el atributo self ya que
> encuentro que es más fácil leer el código, además que en python puedes
> definir atributos de la clase en cualquier parte del cuerpo de la
> clase.
>
> La otra duda es que como a través de test accedo al atributo a?...es
> decir hacer test.a?.....
>
> Y la otra duda {ya comenzando a ser off-topic} como puedo hacer un
> del(test.a) ? de la instancia se puede hacer de lo más bien, pero no
> he encontrado como eliminar un atributo de la clase.
>
> Gracias por vuestras respuestas,
>
> --
> Milton Inostroza Aguilera
>



-- 
Milton Inostroza Aguilera


Más información sobre la lista de distribución Python-es