class Empleado(object): # Existe siempre una clase superior object de la que heredan todos
def __init__(self, nombre, sueldoBruto):
self.nombre = nombre
self.bruto = sueldoBruto
def calcularSueldo(self, descuentos):
return self.bruto - descuentos
class Comercial(Empleado):
def calcularSueldo(self, descuentos, bonificaciones):
return self.bruto - descuentos + bonificaciones
mario = Empleado("Mario", 40000)
isa = Comercial("María Isabel", 50000)
mario.calcularSueldo(500) # un argumento
39500
isa.calcularSueldo(500,3000) # dos argumentos
52500
Podemos poner un valor por defecto en un parámetro de forma que si no se pasa ese parámetro como argumento se toma el valor por defecto.
class Empleado():
def __init__(self, nombre, sueldoBruto):
self.nombre = nombre
self.bruto = sueldoBruto
def calcularSueldo(self, descuentos):
return self.bruto - descuentos
class Comercial(Empleado):
def calcularSueldo(self, descuentos, bonificaciones=0): # parámetro por defecto
return self.bruto - descuentos + bonificaciones
mario = Empleado("Mario Pablo", 40000)
isa = Comercial("María Isabel", 50000)
mario.calcularSueldo(500) # un argumento
39500
isa.calcularSueldo(500) # un argumento, pero usa su propio método
49500
Perro
hereda de la clase Animal
.Perro
sobrescribe el método hacer_sonido()
de la clase Animal
para que el perro ladre en lugar de hacer un sonido genérico.class Animal:
def __init__(self, nombre):
self.nombre = nombre
def hacer_sonido(self):
print("El animal hace un sonido")
class Perro(Animal):
def hacer_sonido(self): # estamos sobrescribiendo el método hacer_sonido
print("El perro ladra")
mi_perro = Perro("Buddy")
mi_perro.hacer_sonido() # Output: El perro ladra
El perro ladra
super()
¶super()
se utiliza para llamar al método de la clase superior Animal
desde la subclase Perro
.Perro
hereda de la clase Animal
.Perro
sobrescribe el método hacer_sonido()
de la clase Animal
para que el perro ladre en lugar de hacer un sonido genérico.super()
para llamar al método original de la clase superior Animal
.class Animal:
def __init__(self, nombre):
self.nombre = nombre
def hacer_sonido(self):
print("El animal hace un sonido")
class Dog(Animal):
def hacer_sonido(self): # estamos sobrescribiendo el método hacer_sonido
super().hacer_sonido() # llamamos al método de la clase superior
print(f"Mi perro {self.nombre} ladra")
mi_perro = Dog("Buddy")
mi_perro.hacer_sonido() # Aquí la salida es doble
El animal hace un sonido Mi perro Buddy ladra