Herencia de Python
- Página anterior Clase/objeto de Python
- Página siguiente Iteración de Python
Herencia de Python
La herencia nos permite definir una clase que hereda todos los métodos y propiedades de otra clase.
Clase baseEs una clase heredada, también conocida como clase base.
SubclaseEs una clase que se hereda de otra clase, también conocida como clase derivada.
Crear una clase base
Cualquier clase puede ser una clase base, por lo tanto, la sintaxis es la misma que para crear cualquier otra clase:
Agregar método
Crear una clase llamada Person que contenga las propiedades firstname y lastname y el método printname:
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) # Crear un objeto con Person y luego ejecutar el método printname: x = Person("Bill", "Gates") x.printname()
Crear una subclase
Para crear una clase que herede funciones de otras clases, envíe el padre como parámetro al crear la subclase:
Agregar método
Crear una clase llamada Student que herede las propiedades y métodos de la clase Person:
class Student(Person): pass
Nota:Si no desea agregar más propiedades o métodos a la clase, utilice pass
palabra clave.
Ahora, la clase Student tiene las mismas propiedades y métodos que la clase Person.
Agregar método
Crear un objeto con la clase Student y luego ejecutar el método printname:
x = Student("Elon", "Musk") x.printname()
Agregar la función __init__()
Hasta ahora, hemos creado una subclase que hereda las propiedades y métodos de la clase padre.
Queremos que __init__()
función se agrega a la subclase (no pass
palabra clave).
Nota:Cada vez que se utiliza la clase para crear un nuevo objeto, se llama automáticamente la función __init__().
Agregar método
Agregar la función __init__() a la clase Student:
class Student(Person): def __init__(self, fname, lname): # Agregar propiedades, etc.
Cuando agrega la función __init__(), la subclase ya no heredará la función __init__() del padre.
Nota:La función __init__() del hijo sobrescribe la herencia de la función __init__() del padre.
Para mantener la herencia de la función __init__() del padre, agregue la llamada a la función __init__() del padre:
Agregar método
class Student(Person): def __init__(self, fname, lname): Person.__init__(self, fname, lname)
Ahora que hemos agregado con éxito la función __init__() y hemos conservado la herencia de la clase padre, estamos listos para agregar funcionalidades en la función __init__().
usando la función super()
Python también tiene super()
hace que la subclase herede todos los métodos y propiedades del padre:
Agregar método
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname)
Al usar la función super()
función, no es necesario usar el nombre del elemento padre, se heredarán automáticamente los métodos y propiedades de su elemento padre.
Agregar propiedades
Agregar método
Añadir una instancia graduationyear
las propiedades del Student
clase:
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019
self.graduationyear = 2019
Agregar método
En este ejemplo, 2019 debería ser una variable y pasarla a la clase Student al crear el objeto student. Para esto, agregue otro parámetro en la función __init__(): def __init__(self, fname, lname,
Añadir
class Student(Person): parámetros, y pasar el año correcto al crear el objeto: def __init__(self, fname, lname,año super().__init__(fname, lname) self.graduationyear = year )
x = Student("Elon", "Musk", 2019)
Agregar método
Añadir una instancia welcome
Añadir al método de la clase Student:
class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year def welcome(self): print("Bienvenido", self.firstname, self.lastname, "a la clase de", self.graduationyear)
Consejo:Si agrega un método con el mismo nombre que el de la clase padre en la subclase, se sobrescribirá la herencia del método padre.
- Página anterior Clase/objeto de Python
- Página siguiente Iteración de Python