Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
¿Qué es la Herencia? | Herencia
Programación Orientada a Objetos en Python a Fondo
course content

Contenido del Curso

Programación Orientada a Objetos en Python a Fondo

Programación Orientada a Objetos en Python a Fondo

1. Conceptos de POO
2. Herencia
3. Encapsulamiento
4. Polimorfismo y Abstracción
5. Métodos Mágicos

book
¿Qué es la Herencia?

En Python, la herencia es uno de los conceptos fundamentales de la programación orientada a objetos (POO). Se refiere a la capacidad de una subclase para heredar propiedades y comportamientos (es decir, métodos y atributos) de una clase padre. La herencia permite la reutilización de código y ayuda a crear una estructura jerárquica de clases, en la que las subclases pueden especializarse o ampliar la funcionalidad de sus clases padre.

Para heredar una subclase de otra clase, puede escribir su nombre entre paréntesis () después del nombre de la subclase (sin espacio):

1234567
class User: role = "User" class Staff(User): pass print(Staff.role)
copy

Este código demuestra que las clases hijo pueden acceder a los atributos de sus clases padre, permitiéndoles utilizarlos o anularlos según sea necesario.

Nota

El intérprete busca atributos desde el Child hasta el último Parent en orden.

Mira el ejemplo de código:

123456789101112131415161718
class User: role = "User" def __init__(self, name): self.name = name def print_name(self): print(f"Is a {self.role} with the name {self.name}") class Staff(User): pass bob = Staff("Bob") bob.print_name() # takes `print_name()` from the `User` class print(bob.role) # takes `role` from the `User` class
copy

El código accede entonces al atributo role de la instancia bob usando bob.role. Como el atributo role no está definido en la clase Staff ni en la instancia bob, se recurre al atributo role de la clase User, y se imprime "User".

En resumen, este código demuestra cómo los atributos de clase pueden ser heredados y accedidos por instancias, así como cómo los atributos de instancia son únicos para cada instancia.

123456789101112131415161718
class User: role = "User" def __init__(self, name): self.name = name def print_name(self): print(f"Is a {self.role} with the name {self.name}") class Staff(User): role = "Staff" bob = Staff("Bob") bob.print_name() # takes `print_name()` from the `User` class print(bob.role) # takes `role` from the `Staff` class
copy

De forma similar, cuando se llama a print(bob.role), se accede al atributo role de la clase Staff, que ha sobreescrito el atributo role de la clase User. Como resultado, saldrá "Staff".

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 1
We're sorry to hear that something went wrong. What happened?
some-alt