[Python] Utilizando orientación a objetos [2]

Iniciado por JaAViEr, Septiembre 27, 2014, 03:27:20 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 27, 2014, 03:27:20 AM Ultima modificación: Septiembre 27, 2014, 08:59:32 AM por Expermicid
Heredando Clases
Veamos... La Herencia en Python es de lo más sencillo que puede haber (Si lo comparas con otros lenguajes). Veamos un ejemplo en código:
Código: python

class Clase_A:
 
    def __init__(self):
     
      pass
   
    def funcion_a(self):
       
        print "FUNCION DE CLASE_A"

class Clase_B(Clase_A):
 
  pass

Bien, tenemos "Clase_A", dentro tiene la función "funcion_a", que solo imprime "FUNCION DE CLASE_A".
Para que la Clase "Clase_B" pueda heredar la función "funcion_a"(Originaria de la  Clase_A) debemos añadir entre paréntesis la clase que vamos a heredar:
Código: python

class Clase_B(Clase_A):

Con eso ya le indicamos a Python que Clase_B heredará todo lo que hay en Clase_A, por lo que ahora podemos crear una instancia de Clase_B y llamar a la función funcion_a tranquilamente.

Creemos la instancia para la Clase Clase_B:
Código: python
c=Clase_B()

Ahora podemos acceder a funcion_a (De Clase_A) con nuestra instancia de Clase_B.
Código final:
Código: python

class Clase_A:
 
    def __init__(self):
     
      pass
   
    def funcion_a(self):
       
        print "FUNCION DE CLASE_A"

class Clase_B(Clase_A):
 
  pass

c=Clase_B()
c.funcion_a()

Output:
Código: text

FUNCION DE CLASE_A

Utilizando variables en Clases
Quise escribir un poco sobre esto porque recuerdo que yo tuve problemas con esto y no lo entendí hasta que le metí manos al código. Así que espero se entienda.

Cuando creamos una Función dentro de una Clase y declaramos alguna variable, esta variable va a ser accesible solo desde la Función en la cuál fue creada, veamos un ejemplo:
Código: python
class Ejemplo:
 
  def funcion_saludo(self, nombre):
   
    print "Hola,", nombre
   
  def funcion_despedida(self):
   
    print "Hasta luego,", nombre

instancia=Ejemplo()
instancia.funcion_saludo("Javier")
instancia.funcion_despedida()

Como te habrás fijado, en la Función funcion_saludo hemos pasado el parámetro "nombre", para luego imprimirlo, pero si queremos acceder a la variable "nombre" desde la Función funcion_despedida nos arrojará un error pues nos dirá que la variable "nombre" no ha sido definida.
Entonces... ¿ Como accedo a esa variable? ¡Es realmente sencillo !

Para que puedas acceder a una variable desde toda una Clase y no solo desde la función donde se definió, debes crear una variable con el prefijo "self.", veamos el caso anterior, pero esta vez con el prefijo "self.nombre":
Código: python
class Ejemplo:
 
  def funcion_saludo(self, nombre):
   
    self.nombre=nombre
    print "Hola,", self.nombre # O print "Hola,", nombre
   
  def funcion_despedida(self):
   
    print "Hasta luego,", self.nombre

instancia=Ejemplo()
instancia.funcion_saludo("Javier")
instancia.funcion_despedida()
'''La Funcion funcion_despedida no necesita
parametro, pues utilizaremos el mismo
valor de la Funcion funcion_saludo.'''

Como puedes ver, hemos declarado que self.nombre=nombre, así podremos acceder a la variable "nombre" de una manera global (gracias a la magia del "self.") a lo largo de nuestra Clase, sin tener que estar pasando parámetros a cada función y re-utilizando datos ya ingresados en otras funciones.

Fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login