• Sábado 9 de Noviembre de 2024, 03:34

Autor Tema:  Las clases en python  (Leído 3442 veces)

Extrax

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Las clases en python
« en: Sábado 5 de Junio de 2010, 10:26 »
0
Buenas!

Mirar, en general entiendo y controlo python, excepto orientación a objetos... :wacko: , y quería saber si hay algún tutorial dedicado solo a las clases y en general POO, ya que como he dicho ando perdido.
Por otra parte, alguien podría explicarme para que sirve el método __init__ en clases y self?   espero que me podais ayudar... saludos  :hola:

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Las clases en python
« Respuesta #1 en: Sábado 5 de Junio de 2010, 14:21 »
0
Cita de: "Extrax"
Buenas!

Mirar, en general entiendo y controlo python, excepto orientación a objetos... :wacko: , y quería saber si hay algún tutorial dedicado solo a las clases y en general POO, ya que como he dicho ando perdido.
Por otra parte, alguien podría explicarme para que sirve el método __init__ en clases y self?   espero que me podais ayudar... saludos  :hola:
Checa este enlace POO en Python, el método __init__ te sirve para instanciar las variables (que no es el constructor, el constructor es __new__) y self es una palabra cualquiera que puedes cambiar por la que tú escojas, pero es una convención usarla y será la que te ayude a controlar los métodos y atributos de la clase.

Cualquier cosa más especifica pregunta.
El pasado son solo recuerdos, el futuro son solo sueños

Extrax

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Las clases en python
« Respuesta #2 en: Domingo 6 de Junio de 2010, 15:33 »
0
Gracias por tu ayuda, pero me han surgido mas dudas (soy bastante nuevo en todo esto de la programación)

1- ¿Que significa instaciar?
2- ¿Que son los constructores __new__ y cuando se usan ?  
3- ¿Es obligatorio en una clase que la primera función sea __init__ ?

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Las clases en python
« Respuesta #3 en: Domingo 6 de Junio de 2010, 16:15 »
0
Cita de: "Extrax"
Gracias por tu ayuda, pero me han surgido mas dudas (soy bastante nuevo en todo esto de la programación)

1- ¿Que significa instaciar?
2- ¿Que son los constructores __new__ y cuando se usan ?  
3- ¿Es obligatorio en una clase que la primera función sea __init__ ?

1) Instanciar es darle un valor inicial a las instancias de una clase
2) El constructor __new__ se usa cuando necesitas controlar la creación de una nueva instancia y usas __init__ cuando necesitas controlar las inicialización de una nueva instancia.
3) Sí, como te dijé antes es el instanciador de los atributos, si viste el link que te pase antes (SPAM de mi blog :P) hay una clase llamada ConexionMySQL
Código: Python
  1. class ConexionMySQL
  2.     def __init__ (self, host='', user='', password='', db=''):
  3.         self.host = host
  4.         self.user = user
  5.         self.password = password
  6.         self.db = db
  7.  

Sigue preguntando, sigue preguntando que para eso estamos.
El pasado son solo recuerdos, el futuro son solo sueños

Extrax

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Las clases en python
« Respuesta #4 en: Jueves 10 de Junio de 2010, 19:33 »
0
Edo, gracias por responderme a mis dudas, y ya me queda todo mucho mas claro. Pero mientras me aclaro en algunas cosas, otras nuevas aparecen y no las entiendo...  :wacko:  si podriais responderme a esta duda os lo agradecería mucho.

Que significa y para que se usa
Código: Python
  1. if __name__ == "__main__":
  2.  
??

lo he visto muchas veces (por ejemplo en tutoriales de PyGame) pero en las explicaciones que he encontrado no me aclaro, prodia alguien hacer un codigo sin modulos importados que contenga clases simples, para que pueda entenderlo ? si no es mucha molestia claro.... sino con una explicacion sobre ese codigo me basta.

saludos!!

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Las clases en python
« Respuesta #5 en: Jueves 10 de Junio de 2010, 22:37 »
0
Todos los módulos son objetos y estos tienen un atributo __name__, este atributo depende de cómo se utiliza el módulo. Si se importa con import, __name__ es el nombre del fichero del módulo, sin la ruta al directorio ni la extensión. Pero también puede ejecutarse un módulo directamente como programa independiente, y en este caso __name__ adquiere un valor especial, __main__.
El pasado son solo recuerdos, el futuro son solo sueños

Extrax

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Las clases en python
« Respuesta #6 en: Viernes 11 de Junio de 2010, 10:12 »
0
Lo siento pero no lo entiendo :( ... podrias poner un ejemplo comparando cuando se usa y cuando no?, gracias...  :unsure:

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Las clases en python
« Respuesta #7 en: Viernes 11 de Junio de 2010, 16:37 »
0
A ver cuando usas if __name__=='__main__' estás tratando de decir que si se está ejecutando desde el mismo script haga algo

Código: Python
  1. #!/usr/bin/env python
  2. #hola.py
  3.  
  4. def hola():
  5.   print 'el programa se esta ejecutando directamente'
  6.  
  7. def nohola():
  8.   print 'el programa se esta ejecutando desde otro programa'
  9.  
  10. if __name__=='__main__':
  11.   hola()
  12. else:
  13.   nohola()
  14.  
  15. #!/usr/bin/env python
  16. #print2.py
  17.  
  18. import hola
  19.  
Ejecutalos y verás la diferencia
El pasado son solo recuerdos, el futuro son solo sueños

Extrax

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Las clases en python
« Respuesta #8 en: Viernes 11 de Junio de 2010, 17:26 »
0
Muchas gracias, aora ya lo entiendo, o eso creo... :rolleyes: , si me equiboco corregirme.  
Lo que viene a ser es que si el modulo donde esta el codigo, es el principal y no tiene ningun modulo importado, __name__ es igual a  "__main__", sin embargo, si el modulo que estamos usando corre a cuenta de otro modulo que a sido importado (import hola), __name__ no es igual a "__main__" .

saludos :good:
« última modificación: Viernes 11 de Junio de 2010, 17:29 por Extrax »

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Las clases en python
« Respuesta #9 en: Viernes 11 de Junio de 2010, 17:27 »
0
Exacto.
El pasado son solo recuerdos, el futuro son solo sueños