La herencia es un principio fundamental de la programación orientada a objetos que permite crear una nueva clase a partir de una ya existente. Esta nueva clase hereda todos los atributos y métodos de la clase original, aunque también puede añadir o modificar algunos.
En Python, la herencia se implementa declarando una nueva clase y el nombre de la clase de la cual se quiere heredar entre paréntesis:
```python
class ClaseBase:
pass
class ClaseDerivada(ClaseBase):
pass
```
En este caso, `ClaseDerivada` hereda de `ClaseBase`.
Python también soporta la herencia múltiple, donde una clase puede heredar de varias clases a la vez:
```python
class ClaseBase1:
pass
class ClaseBase2: pass
class ClaseDerivada(ClaseBase1, ClaseBase2):
pass
```
Aquí, `ClaseDerivada` hereda de `ClaseBase1` y `ClaseBase2`.
Un detalle importante a tener en cuenta es que si una clase derivada redefine un método que ya existe en la clase base, el método de la clase base será reemplazado por el nuevo. Este proceso se conoce como sobrescritura de métodos.
Además, si quieres llamar a un método de la clase base desde la clase derivada, puedes hacerlo usando la función `super()`. Por ejemplo:
```python
class ClaseBase:
def saludo(self):
print(“Hola desde la ClaseBase”)
class ClaseDerivada(ClaseBase):
def saludo(self):
super().saludo()
print(“Hola desde la ClaseDerivada”)
```
En este caso, cuando se llama al método `saludo()` de la `ClaseDerivada`, se ejecutará primero el método `saludo()` de la `ClaseBase` gracias a la llamada `super().saludo()`, y luego el código que se encuentra después en la `ClaseDerivada`.