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:
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:
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=Clase_B()
Ahora podemos acceder a funcion_a (De Clase_A) con nuestra instancia de Clase_B.
Código final:
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:
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:
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":
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: http://codigo.ga/python/python-utilizando-orientacion-a-objetos-2/