Contenido del Curso
Programación Orientada a Objetos en Python a Fondo
Programación Orientada a Objetos en Python a Fondo
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.
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)
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ónsuper()
llama a métodos de la clase Parent y utiliza atributos Parent. Esto nos permite extender métodos padre.
Un ejemplo más:
class User: role = "User" class Admin(User): role = "Admin" def info(self): print(self.role) print(super().role) admin = Admin() admin.info()
Nota
La función
super()
es utilizada por frameworks populares como Django.
¡Gracias por tus comentarios!