Herencia en Python
Voy a explicar muy brevemente como podemos hacer herencia en Python, aunque realmente es la cosa más tonta que hay en el mundo. Lo primero es crear una clase base:
class Coche(object):
def __init__(self, marca):
self.marca = marca
print "Coche:", marca
A partir de aquí podemos crear las clases hijas:
class Audi(Coche):
pass
class Seat(Coche):
pass
class Toyota(Coche):
pass
Ahora ya podemos crear instancias de las clase que acabamos de crear:
a5 = Audi('Audi')
ibiza = Seat('Seat')
auris = Toyota('Toyota')
Podemos ver, que por defecto se llama al constructor de la clase base, es decir, Coche. Pero, ¿qué pasa si queremos personalizar los constructores?
class Seat(Coche):
def __init__(self, modelo):
super(Seat, self).__init__('Seat')
self.modelo = modelo
print "Modelo:", modelo
seat = Seat('Ibiza')
Aún así, se puede instanciar objetos de la clase Coche. Esto puede ser interesante o puede que no nos interese dar esta opción. En caso de que deseemos hacer una clase base abstracta, podemos hacer lo siguiente:
class Coche(object):
def __init__(self, marca):
if isinstance(self, Coche):
raise NotImplementedError('No se puede instanciar la clase Coche')
self.marca = marca
print "Coche:", marca
try:
coche = Coche('Mi marca')
except NotImplementedError:
print 'No, no, ...'
Tags
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
