Herança é um mecanismo que a orientação a objeto provê, com objetivo de facilitar o reaproveitamento de código. A ideia é que as classes sejam construídas formando uma hierarquia.
A nova classe pode implementar novos métodos e atributos e herdar métodos e atributos da classe antiga (que também pode ter herdado de classes anteriores), porém estes métodos e atributos podem substituídos na nova classe.
A forma comum de herança é chamada de herança simples, na qual a nova classe é derivada de apenas uma classe já existente, porém é possível criar várias classes derivadas, criando uma hierarquia de classes.
Para localizar os métodos e atributos, a hierarquia é seguida de baixo para cima, de forma similar a busca nos namespaces local e global.
Exemplo de herança simples:
In [1]:
class Pendrive(object):
def __init__(self, tamanho, interface='2.0'):
self.tamanho = tamanho
self.interface = interface
class MP3Player(Pendrive):
def __init__(self, tamanho, interface='2.0', turner=False):
self.turner = turner
Pendrive.__init__(self, tamanho, interface)
mp3 = MP3Player(1024)
print '%s\n%s\n%s' % (mp3.tamanho, mp3.interface, mp3.turner)
A classe MP3Player herda de Pendrive o tamanho e a interface.
In [1]:
Out[1]: