[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: php

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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta