Preguntas sencillas

Marcos Sánchez Provencio rapto en arrakis.es
Lun Mar 3 17:50:36 CET 2003


El lun, 03-03-2003 a las 08:44, Gonzalez Suarez, Daniel escribió:
> Buenas,
> 
> Sigo con las preguntas sencillas. A raíz de la respuesta de José L. se me
> plantea una nueva pregunta sencillita, ¿qué hay que hacer para añadir un
> método a una clase en tiempo de ejecución? 

Ésa ya estaba respondida en otro mensaje.
> 
> Debo decir que tanta flexibilidad de Python no me gusta un pelo. Prefiero
> que en tiempo de compilación se detecten errores del tipo "Método o atributo
> no existe".
> 
Eso lo hace mucho mejor Java o C++ (me imagino que que C# también).


> Otra cosa que no ha me gustado es el mecanismo cutre para definir atributos
> y métodos privados (anteponiéndole __ al nombre del atributo/método). Y
> mucho menos el truco para poder acceder a atributos/métodos privados
> (_nombreClase__nombreAtributo).
> 

Al fin y al cabo es un añadido para hacer algo no natural en el
lenguaje. Lo natural en Python es que todo sea público y dinámico.
Utilizarlo de otro modo va a provocar que tengas todas las desventajas
de Python y ninguna de las ventajas.

> Espero vuestra opinión.
> 
> Un saludo a todos.
> 
> 
> -----Mensaje original-----
> De: PpluX [mailto:johiva en inf.upv.es]
> Enviado el: jueves, 27 de febrero de 2003 22:43
> Para: La lista de python en castellano
> Asunto: Re: [Python-es] Preguntas sencillas
> 
> 
> > 3) ¿Existe en Python algo parecido a clases abstractas de Java? ¿Y a las
> > interfaces?
> 
> Hola, yo solo voy a añadir un par de cosillas por si te puede ayudar.
> La resolución de las llamadas a métodos en python es totalmente virtual,
> es decir solo se determina en tiempo de ejecución su una determinada
> instancia tiene o no un método definido.  Bueno ¿y entonces qué? pues
> esto te permite conseguir resultados parecidos a lo que harías en java
> cuando usas una clase abstracta o una interfaz, puedes suponer que una
> clase implementa un método sin problemas de que el "intérprete" no se va a
> quejar... ej:
> 
>    cuando tu llamas a "c.metodo()" pueden pasar: 
>     - inicialmente parece que python buscará la clase de la que es
>       instancia c y consultará si existe el método "metodo". Si no
>       existe podríamos esperar que diese un error... pero
>     - NO, python no se va a preocupar "ahora" si c tiene o no el método
>       "metodo", lo comprobará realmente en tiempo de ejecución, es decir
>       cuando se tenga que ejecutar esa instrucción (por eso se llama
>       virtual).*
>       
> Esto te permite como comentaba antes que puedas suponer que ciertas
> clases definen, o redefinen los métodos que quieras. Es cuestión de ser
> ordenado. El problema es que por un lado te da flexibilidad y por el
> otro un programa que "compila" no necesariamente va a funcionar como
> esperas. =)
> 
> Bueno, creo que la cosa me ha quedado muy larga... y tal vez no sea nada
> nuevo, pero ahi esta. 
> 
> 
> Un saludo.
> 
> (*) una razón para esto es que en cualquier momento a la
>     instancia c le puedes añadir nuevos metodos o atributos... (y por
>     eso la resolución es solamente durante la ejecución). De igual forma
>     en una clase puedes decir "del c.atributo" y dinámicamente ese
>     atributo desaparecerá (una razón más por la que solamente durante la
>     ejecución concreta se puede determinar que métodos o atributos
>     tienen una instancia)
> 
> -- 
> *-------*      
> >  (@_  <  From : Jose L. Hidalgo Valiño
> >  //\  <  Email: johiva en inf.upv.es
> >  V_/_ <         joseLuis.Hidalgo en hispalinux.es
> *-------*         pplux en polinux.upv.es
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Esta parte del mensaje esta firmada digitalmente
URL: <http://mail.python.org/pipermail/python-es/attachments/20030303/4be4da2b/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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