¿Cómo heredar de clases en diferentes archivos Python?
Capítulo 8: Herencia de clases en diferentes archivos - POO Python
Seguimos con la herencia de clases. Esta vez, te enseño a utilizar clases y herencias a través de múltiples archivos de Python.
Aquí tienes el código que debes incluir en cuatro archivos diferentes, serán los que vas a utilizar en este capítulo.
Archivo a.py
En este archivo, tenemos tres import para importar el contenido de los otros archivos.
Lo siguiente es una función que nada tiene que ver con las clases. Solo es para que veas la diferencia entre función y método.
Gracias a los import tenemos acceso a las clases almacenadas en los otros archivos y podemos hacer la instanciación desde aquí aunque no esté la clase en este mismo archivo.
import b
import c
import d
def muestra_datos_comun(self):
print("El nombre y los apellidos del usuario son: " + self.nombre, self.apellidos)
print("El ID de usuario es: " + self.nid + ".")
print("El alias del usuario es: " + self.alias + ".")
usuario1=b.Usuarios("001", "raulito43", "Raúl", "Fernández Gomila")
usuario2=c.UsuariosPremium("002", "PdePython", "Paula", "Vega García", 10, 500)
usuario3=d.UsuariosPremiumPlus("003", "BreakTheSystem", "Anonymous", "Anonymous Anonymous", 25, 1500)
print("\nDATOS USUARIO 1 - Usuarios")
usuario1.muestra_datos()
print("\nDATOS USUARIO 2 - UsuariosPremium")
usuario2.muestra_datos()
print("\nDATOS USUARIO 3 - UsuariosPremiumPlus")
usuario3.muestra_datos()
Archivo b.py
Este archivo contiene la clase Usuarios.
class Usuarios:
tipo_usuario = "Free"
publicidad = True
def __init__(self, nid, alias, nombre, apellidos):
self.nid = nid
self.alias = alias
self.nombre = nombre
self.apellidos = apellidos
def muestra_datos(self):
print("El nombre y los apellidos del usuario son: " + self.nombre, self.apellidos)
print("El ID de usuario es: " + self.nid + ".")
print("El alias del usuario es: " + self.alias + ".")
Archivo c.py
Este archivo importa del archivo b.py, con lo que tiene acceso a la clase Usuarios, lo que permite crear la herencia con dicha clase.
import b
class UsuariosPremium(b.Usuarios):
def __init__(self, nid, alias, nombre, apellidos, participacion_sorteos, puntos_premios):
self.participacion_sorteos = participacion_sorteos
self.puntos_premios = puntos_premios
self.contenido_premium = True
super().__init__(nid, alias, nombre, apellidos)
def muestra_datos(self):
super().muestra_datos()
print("Tienes ", self.puntos_premios, " puntos para canjear en premios.")
print("Tienes ", self.participacion_sorteos, " puntos para participar en sorteos.")
tipo_usuario = "Premium"
publicidad = False
participacion_sorteos = 10
Archivo d.py
Finalmente, tengo este archivo que importa de c.py para obtener la herencia de la clase UsuariosPremium.
import c
class UsuariosPremiumPlus(c.UsuariosPremium):
participacion_sorteos = 25
def muestra_datos(self):
super().muestra_datos()
print("El tipo de usuario es: ", c.UsuariosPremium.tipo_usuario)
En el vídeo tienes las explicaciones más a fondo.
Comentarios
Si te quedan dudas sobre el temario, sobre Python, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.