Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Superclase | 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
Superclase

En Python, una superclase es una clase de la que heredan otras clases. Sirve como clase padre o clase base, proporcionando atributos y métodos que pueden ser heredados y utilizados por sus subclases. Proporcionan una forma de definir funcionalidades y características comunes que pueden ser compartidas entre múltiples clases relacionadas.

La función super() en Python se utiliza para acceder e invocar métodos o atributos de una superclase dentro de una subclase. Proporciona una forma conveniente de delegar o llamar a la implementación de un método de la superclase. Mediante el uso de super(), puede llamar a un método definido en la clase padre, incluso si el método ha sido sobrescrito en la clase hija. Esto permite la reutilización de código y facilita la extensión o personalización del comportamiento de la clase padre.

La función super() se utiliza normalmente dentro de una subclase para llamar a los métodos de la clase padre. Toma dos argumentos: la propia subclase (normalmente self) y la instancia de la subclase (opcional). Cuando se llama sin argumentos, super() devuelve un objeto temporal de la superclase. Puede llamar a métodos o acceder a atributos de este objeto utilizando el punto (.). Esto proporciona una manera de anular o extender selectivamente el comportamiento de la clase padre, mientras que todavía se benefician de su funcionalidad existente.

12345678910111213141516171819
class User: def __init__(self, username, password): self.username = username self.password = password class NewUser(User): def __init__(self, username, password, name, surname, age): super().__init__(username, password) self.name = name self.surname = surname self.age = age user = NewUser("user123", "secret_password", "John", "Johnson", 24) print(user.username) print(user.password) print(user.name) print(user.surname) print(user.age)
copy

El código proporcionado define dos clases: User y NewUser.

La clase User tiene un método constructor __init__() que toma dos parámetros, username y password. La clase NewUser es una subclase de User y la extiende añadiendo atributos adicionales: nombre, apellidos y edad.

El método __init__() de la clase NewUser toma cinco parámetros: username, password, name, surname, y age. Llama al método __init__() de la clase padre (User) usando super().__init__(username, password) para inicializar los atributos username y password heredados de la clase User. A continuación, establece los atributos name, surname y age utilizando los valores proporcionados.

Nota

Puedes utilizar la función super() para otros métodos y atributos. La función super() llama a métodos de la clase Parent y utiliza atributos Parent. Esto nos permite extender métodos padre.

Un ejemplo más:

123456789101112
class User: role = "User" class Admin(User): role = "Admin" def info(self): print(self.role) print(super().role) admin = Admin() admin.info()
copy

Nota

La función super() es utilizada por frameworks populares como Django.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

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