Documentación sobre clases en Python

Solicite, consulte o publique recursos de referencia para desarrolladores.

Documentación sobre clases en Python

Notapor algarafa » Sab Ene 24, 2009 10:24 am

Hola! He acabado el libro por el que estaba aprendiendo Python, y resulta que no te explicaba hacer clases. Si conocieran algun manual en el que te explicaran como hacerlas partiendo de que ya sabes lo básico de Python. Lo más parecido a una clase que hicé con el manual fué un registro, que creo que es una clase simplificada, porque se definia así:
Código: Seleccionar todo
from record import record
class Ejemplo(record):

Muchas gracias a todos!!!!
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Notapor Juan Carlos » Sab Ene 24, 2009 1:28 pm

Hola, esta es la documentacion de python que habla sobre las clases.

http://docs.python.org/tutorial/classes.html

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor endaramiz » Sab Ene 24, 2009 5:38 pm

En castellano:
http://pyspanishdoc.sourceforge.net/tut/node11.html

Yo creo recordar que me leí lo básico y luego me puse a mirar ejemplos de esta web porque me pareció que se iba complicando mucho la documentación.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

¡Gracias!

Notapor algarafa » Sab Ene 31, 2009 10:58 am

Bueno, gracias a los dos. Ademas me he estado mirando algunos ejemplos de por ahí, y cleo que ya lo entiendo, lo que es lo básico de la función orientada a objetos. La clase en realidad, solo sirve para agrupar metodos y argumentos, no tiene más, pero hace el código más facil de ampliar y lo hace más legible, según lo que he entendido esta es su función. Solo tengo unas dudas.
    :arrow: ¿Por qué en las funciones dentro de las clases se pone def _init_? (La duda es que para que sirve el init)
    :arrow: ¿El argumento self qué es exactamente?

Bueno, eso es todo, la explicación que sea lo más sencilla posible. Es que todo lo que encuentro por internet es para programadores expertos que ya se saben desenvolver con la programación orientada a objetos de otros lenguajes como Java.
¡Agradezco vuestra ayuda!
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Notapor Juan Carlos » Sab Ene 31, 2009 8:00 pm

Hola,
un ejemplo sobre qué es una clase en la Programacion Orientada a Objetos seria el siguiente:

Piensa en que cosas tiene una computadora. Tal vez pienses en un teclado, un mouse, una CPU y un monitor.
Ahora si piensas en las cosas que puedes hacer con una computadora, seguramente pensaras en "encender", "apagar", "chatear", etc.

Eso es una clase, no solo una agrupacion de metodos y funciones, sino un intento por abstraerse del mundo de la programacion y llevar la mente del programador al mundo real.
Pensar en cosas reales ("computadora", "mouse", etc) y no solo en funciones (o acaso has visto alguna vez caminar una funcion por la calle? )

Despues de esta intro, te explico qué es el metodo "__init__". Este metodo es llamado automaticamente por Python al intentar instanciar un objeto. Funciona como un "constructor" que le dice a Python con que valores debe instanciar el objeto.

Veamos:

Código: Seleccionar todo
class Computadora:
   
    def __init__(self, memoriaRAM, memoriaDelDiscoDuro):
          self.memoriaRAM = memoriaRAM
          self.memoriaDelDiscoDuro = memoriaDelDiscoDuro

    def mostrarHardware(self):
         print "Esta computadora tiene ",
         print self.memoriaRAM,
         print " de memoria RAM y ",
         print self.memoriaDelDiscoDuro,
         print " de memoria en el disco duro"


miComputadora = Computadora(128, 40)

#aqui se ejecuta el metodo __init__
#el primer parametro (llamado self) es automaticamente reemplazado por el objeto, en este caso "miComputadora"

miComputadora.mostrarHardware()

#nuevamente el primer parametro es automaticamente reemplazado por el objeto, en este caso  "miComputadora"


Ahora, "miComputadora" tiene 128 de memoria RAM y 40 de disco duro. Y dicha informacion fue guardada segun el codigo del metodo __init__.

Como vez, en el ejemplo, el primer parametro de todos los metodos es reemplazado automaticamente por el objeto sobre el cual actua. Por convencion, se usa la palabra "self", pero se podria poner cualquier otra cosa.

Observa el metodo mostrarHardware(). Ese metodo va a mostrar los valores de la computadora, ¿pero de cual?

Código: Seleccionar todo
miComputadora.mostrarHardware()

#muestra la informacion de la computadora llamada "miComputadora"
#El codigo que se ejecuta es el siguiente:
#
#         print "Esta computadora tiene ",
#         print miComputadora.memoriaRAM,
#         print " de memoria RAM y ",
#         print miComputadora.memoriaDelDiscoDuro,
#         print " de memoria en el disco duro"

otraComputadora.mostrarHardware()

#muestra la informacion de la computadora llamada "otraComputadora"
#El codigo que se ejecuta es el siguiente:
#
#         print "Esta computadora tiene ",
#         print otraComputadora.memoriaRAM,
#         print " de memoria RAM y ",
#         print otraComputadora.memoriaDelDiscoDuro,
#         print " de memoria en el disco duro"



El parametro "self", funciona como un comodin que es reemplazado por el nombre del objeto sobre el cual se hace el llamado al metodo, (en este caso, la computadora a la cual se le pide que muestre "sus" datos de hardware)

El tema no es dificil, pero la verdad es que un poco confuso al principio. Yo aprendi usando el interprete de Python y experimentando.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Ok!!! Creo que ya lo entiendo

Notapor algarafa » Dom Feb 01, 2009 10:42 am

¡Gracias, creo que ya lo entiendo! Creo que es esto.
Las clases tratan de amoldarse al modo de pensar de la persona, y no al de la máquina.
La función def _init_ hace que cuando se inicia la clase, esta tome los valores por defecto que se indican aquí, que en el caso de tu ejemplo se pasan como parametro, aunque se podrían definir dentro de la función.
El parametro self, es un simple convenio, en realidad lo que hace ser reemplazado por el objeto activo en ese momento, por ejemplo en lo de:
Código: Seleccionar todo
micomputadora.mostrarHardware()

self sería micomputadora.
Bueno, creo que es esto, gracias por haberte currado un ejemplo y todo :D
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Notapor Dokan » Mar Mar 03, 2009 3:38 pm

Muy bueno Juan Carlos, no había leído nada tan bueno sobre clases desde que me puse con el libro "Inmersión en Python". Te lo recomiendo rafahack95. Aunque ya lo tengas claro es una guía imprescindible tanto para empezar como de referencia para un nivel más avanzado.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Le echaré un vistazo

Notapor algarafa » Mar Mar 03, 2009 5:57 pm

Dokan escribió:Muy bueno Juan Carlos, no había leído nada tan bueno sobre clases desde que me puse con el libro "Inmersión en Python". Te lo recomiendo rafahack95. Aunque ya lo tengas claro es una guía imprescindible tanto para empezar como de referencia para un nivel más avanzado.

Le echaré un vistazo. Es que ahora me estoy tomando un descanso de programr, para personalizar un poco mi Debian recién reinstalado. La verdad es que gráficamente se nota la diferencia de etch a lenny, pero en fin que me desvio del tema, que me lo mirare, aunque está orientado a programadores que ya han programado en otros lenguajes, y yo me inicio con Python.
http://liberatumundo.wordpress.com/
Avatar de Usuario
algarafa
 
Mensajes: 135
Registrado: Lun Oct 27, 2008 6:12 pm
Ubicación: España

Notapor Dokan » Mar Mar 03, 2009 9:43 pm

aunque está orientado a programadores que ya han programado en otros lenguajes, y yo me inicio con Python.


Eso es porque no enseña programación, enseña Python y lo hace muy bien.
Cuando lo leí no tenía ni idea de programar, y sigo sin tenerla, pero después de haberlo leído sé de lo que es capaz python. Está muy clarito, conciso y detallado, 0% paja en los primeros 5 o 6 capítulos que son los básicos. Además, se leería de un tirón si no fuera porque te pasas la mitad del tiempo probando cosas y buscando otras.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm


Volver a Artículos, traducciones y documentación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron