la POO en python

Juan Carlos Rodrigo jrodrigog en gmail.com
Lun Sep 18 04:38:36 CEST 2006


> En todos los ejemplos de programas que usan POO en python he visto que es un
> poco rara, me explico:
> 
> Definen todos los atributos dentro de metodos....

Un detalle... Todo el mundo suele apuntar esto que tu dices;
pero si estudias un compilador OO te daras cuenta de una
cosa y es que sigue la estructura interna que Python 
muestra como externa. :)

Esto es... Un compilador de C++ termina convirtiendo el
metodo de una clase en la funcion:

// Pasa un puntero al area de datos de la clase
void metodo( Clase* obj ); 

Y si te fijas esto es exactamente:

class Foo:
 # self es un puntero al area de datos de la clase
 def __init__( self ): 
  self._dato = None

En C++  (this) simplemente flota en la clase, pero
en el fondo el compilador termina "convirtiendo" cada 
metodo al formato que puedes ver en Python.

Con que el paso del puntero sea explicito (No implicito 
como en C++ o Java) se consigue una cosa y es que Python 
sea aun mas flexible:

# Usando los metodos de una clase
# sobre el area de datos de otra
class A:
 def __init__( self ):
   self._data = 0
 def get_data( self ):
   return self._data

class B( A ):
 def __init__( self ):
   self._data = 1

if __name__ == "__main__":
 b = B()
 print A.get_data( b ) # 1
------------ 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