PyCharm

Pycharm es un fantástico IDE para Python.
Cuenta con versión gratuita y versión de
pago. Tú eliges.
Este es el IDE que utilizo en el curso
Ir a la página de descargaSeguimos con la herencia de clases. Esta vez, te enseño a importar cosas de la superclase con super().
Es importante que veas el vídeo para poder entender a la perfección estre tema.
Mira el siguiente código. Tenemos tres clases, Usuarios, UsuariosPremium y UsuariosPremiumPlus.
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 + ".")
class UsuariosPremium:
tipo_usuario = "Premium"
publicidad = False
participacion_sorteos = 10
class UsuariosPremiumPlus(UsuariosPremium):
participacion_sorteos = 25
De estas clases, es muy importante que sepas de qué clase hereda cada una.
La subclase UsuariosPremium hereda de la superclase Usuarios. La subclase UsuariosPremiumPlus hereda de su superclase UsuariosPremium, no de Usuarios.
Se puede poner una clase init en una subclase. Pero como ya sabes, los métodos se sobreescriben con la herencia, es decir, un __init__ en la subclase UsuariosPremium, va a hacer que el otro de la superclase se sobreescriba en su herencia. Por lo que quiere decir, que cada clase puede tener herencia, pero conservar los métodos y atributos propios que se deseen.
class UsuariosPremium:
def __init__(self, participacion_sorteos, puntos_premios):
self.participacion_sorteos = participacion_sorteos
self.puntos_premios = puntos_premios
self.contenido_premium = True
Esto es un problema, ya que nos va a sobreescribir todo el método __init__ y yo lo que quiero es que se puedan aprovechar todo el método __init__ de la clase Usuarios y además utilizar los de esta clase (UsuariosPremium). Para poder utilizar características del __init__ de Usuarios y las propias de UsuariosPremium lo puedes hacer utilizando super().
Aquí tienes un ejemplo:
class UsuariosPremium:
def __init__(self, participacion_sorteos, puntos_premios):
self.participacion_sorteos = participacion_sorteos
self.puntos_premios = puntos_premios
self.contenido_premium = True
super().__init__(nid, alias, nombre, apellidos)
Con esta última línea estoy añadiendo en una línea todo lo que quiero del método __init__ de la clase Usuarios que ha sido reescrito al declarar un método __init__ en UsuariosPremium.
Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.
Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.
No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.
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.