Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/05/2011, 15:01
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Dudas básicas en python

Cita:
Iniciado por rafuru Ver Mensaje
Hola
Hola

Cita:
Iniciado por rafuru Ver Mensaje
Tengo algunos proyectos que quiero comenzar a hacer en python, estoy actualmente programando en Java usando POO, por lo cual pensé que no seria tan complicado adaptarme a python.
No lo es, la verdad es que es ridículamente sencillo adaptarte a python.

Cita:
Iniciado por rafuru Ver Mensaje
Primero - los self
Usé el buscador y me tope con un tema de un usuario con la misma duda, y la respuesta me convencio, que los self son referencias a atributos de la misma clase .. como usar el this.

Pero en algunos ejemplos de codigo veo que hay la definicion de una funcion con un self como argumento ... como esta eso?

algo asi:
Código:
def miFuncion(self):
codigo
En ese caso, para que sirve el self como argumento (o parametro)..?
Sirve como ambos. Pero cuando haces métodos para las clases es obligatorio que el primer parámetro sea self pero la palabra self es una convención no una obligacion.

Cita:
Iniciado por rafuru Ver Mensaje
Segundo ...
La pregunta es.. (sin mas preambulos lol) ... que es el ___name___ si bien me explica que cuando un archivo (modulo o clase) esta siendo ejecutado y no importado trae un nombre por default se llama __main__ pero en caso de que no, que valor toma __name__? ..
El nombre del modulo, mi si modulo lo llamo hola.py al importarlo __name__ toma el valor de hola.

Cita:
Iniciado por rafuru Ver Mensaje
Es cierta mi percepcion? , que antes de ejecutar algo primero se deben definir todas las funciones? .. es decir hacer todos los def() y luego ya la ejecucion?..
Si, así es. Es lo mismo que las variables, primero las inicializas y luego las usas (en python). En otros lenguajes primero las declaras y luego las usas.

Cita:
Iniciado por rafuru Ver Mensaje
Claro, es una manera poco portable y erronea de hacer las cosas, ya que lo ideal es separar las funciones en una clase y las instrucciones en otras.
??? Ok a esta no le entendí muy bien.

Cita:
Iniciado por rafuru Ver Mensaje
Oh si, casi lo olvido, podrian explicarme mas o menos como funciona la herencia en python?
Claro, funciona tal como lo esperarías que funcionara no como en java.
Código Python:
Ver original
  1. #Ejemplo de herencia simple.
  2. class Padre: #Clase padre
  3.     #Algunos atributos
  4.     a = 10
  5.     b = 20
  6.  
  7.     #Un metodo
  8.     def suma(self):
  9.         return self.a + self.b
  10.  
  11. class Hijo(Padre):
  12.     resultado = 0 #Agrego atributos
  13.     def resta(self): #Agrego metodos
  14.         self.resultado = self.a - self.b
  15.  
  16.     def suma(self): #Sobre escribo metodo
  17.         self.resultado = self.a + self.b
  18.  
  19. h = Hijo()
  20. print h.resultado
  21.  
  22. h.resta()
  23. print h.resultado
  24.  
  25. h.suma()
  26. print h.resultado

Cita:
Iniciado por rafuru Ver Mensaje
Leí el libro python para todos y dice que en realidad no existe... tampoco se pueden sobreescribir los metodos.. y que de hecho no pueden haber metodos con el mismo nombre pero con distintos parametros..
Eso es por que tenemos duck typing (Cuando veo un ave que camina como un pato y nada como pato y hace quack como un pato llamo a esa ave "pato"), parámetros opcionales, diccionarios o listas como parametros y muchas otras cosas para funciones.