Invocar al superconstructor de la clase principal en Python

Vaibhav Vaibhav 12 abril 2022
Invocar al superconstructor de la clase principal en Python

La herencia es un concepto poderoso de la programación orientada a objetos en informática que nos ayuda a evitar escribir código redundante y va bien con la regla de oro DRY de la programación (Don't repeat yourself). Usando la herencia, una clase puede heredar todas las propiedades y funciones de otra clase. La clase de la que se hereda la funcionalidad es la clase principal y las clases que heredan la funcionalidad son clases secundarias.

La herencia ayuda a los programadores y desarrolladores a escribir código escalable, reutilizable y mantenible, lo que mejora la productividad y la eficiencia.

Para heredar todos los atributos y métodos, debemos ejecutar el constructor de la clase principal desde las clases secundarias. En este artículo, aprenderemos cómo invocar al superconstructor de la clase principal en Python.

Invocar al superconstructor de la clase principal en Python

El constructor de la clase principal o el superconstructor se invoca en los constructores de las clases secundarias. La sintaxis del mismo es la siguiente.

super().__init__(*args, **kwargs)

Todos los argumentos requeridos por la clase padre se pasan dentro del método __init__(). En la sintaxis anterior, *args, **kwargs cubre todos los argumentos, pero también se pueden mencionar individualmente todos los argumentos de la siguiente manera.

super().__init__(argument1, argument2, argument3, ...)

Ahora que hemos terminado con la teoría, entendamos el concepto de manera práctica. Consulte el siguiente código de Python para comprender el concepto de herencia y cómo invocar un superconstructor.

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def get_name(self):
        return self.name

    def set_name(self, name):
        if isinstance(name, str):
            self.name = name

    def get_age(self):
        return self.age

    def set_age(self, age):
        if isinstance(age, int):
            self.age = age

    def get_gender(self):
        return self.gender

    def set_gender(self, gender):
        if isinstance(gender, str):
            self.gender = gender


class Student(Person):
    def __init__(self, name, age, gender, roll_number):
        super().__init__(name, age, gender)  # Important
        self.roll_number = roll_number

    def get_roll_number(self):
        return self.roll_number

    def set_roll_number(self, roll_number):
        if isinstance(roll_number, int):
            self.roll_number = roll_number


adam = Student("Adam", 21, "M", 5)
emma = Student("Emma", 23, "F", 18)
print("Name:", adam.get_name())
print("Age:", adam.get_age())
print("Gender:", adam.get_gender())
print("Roll Number:", adam.get_roll_number())
print()
print("Name:", emma.get_name())
print("Age:", emma.get_age())
print("Gender:", emma.get_gender())
print("Roll Number:", emma.get_roll_number())

Producción :

Name: Adam
Age: 21
Gender: M
Roll Number: 5

Name: Emma
Age: 23
Gender: F
Roll Number: 18

La clase Person es la clase principal y la clase Student es la clase secundaria. Las clases padre e hijo tienen setters y getters para todos sus atributos. La clase secundaria hereda todos los atributos y los métodos de la clase principal. Esta sentencia super().__init__(name, age, gender) invocó al constructor de la clase Person. Tenga en cuenta que es necesario invocar el constructor de la clase principal; de lo contrario, el código se romperá.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python Class