Sobrecargar un constructor en Python

Hemank Mehtani 30 enero 2023
  1. Uso de múltiples argumentos para sobrecargar constructores en Python
  2. Utilice los decoradores @classmethod para sobrecargar un constructor en Python
Sobrecargar un constructor en Python

Varios constructores ayudan a personalizar nuestra clase personalizada de acuerdo con sus parámetros. Mientras usamos diferentes parámetros, podemos activar diferentes constructores.

Python no admite directamente varios constructores. Cuando se proporcionan varios constructores en la clase, el último anula al anterior. Pero hay algunas formas alternativas de sobrecargar un constructor en Python.

Discutiremos estos métodos en este artículo.

Uso de múltiples argumentos para sobrecargar constructores en Python

La sobrecarga de funciones se refiere a tener diferentes funciones con el mismo nombre con diferentes tipos de parámetros. Podemos sobrecargar un constructor declarando múltiples condiciones, con cada condición basada en un conjunto diferente de argumentos.

Por ejemplo,

class delftstack:
    def __init__(self, *args):
        if isinstance(args[0], int):
            self.ans = args[0]
        elif isinstance(args[0], str):
            self.ans = "Hello from " + args[0]


s1 = delftstack(1)
print(s1.ans)

s2 = delftstack("Delft")
print(s2.ans)

Producción :

1
Hello from Delft

En el ejemplo anterior, tenemos dos tipos de parámetros en el constructor. Uno es una cadena y el otro es un número entero. La construcción está sobrecargada para dar la salida basada en el tipo de argumentos proporcionados.

También podemos sobrecargar un constructor en función del número de argumentos proporcionados. Este método es similar al ejemplo anterior.

Vea el código a continuación.

class delftstack:
    def __init__(self, *args):
        if len(args) > 3:
            self.ans = "More than three"
        elif len(args) <= 3:
            self.ans = "Less than three"


s1 = delftstack(1, 2, 3, 4)
print(s1.ans)

s2 = delftstack(1, 2)
print(s2.ans)

Producción :

More than three

Less than three

Utilice los decoradores @classmethod para sobrecargar un constructor en Python

El decorador @classmethod permite que la función sea accesible sin instanciar una clase. La clase misma y sus instancias pueden acceder a dichos métodos. Cuando se utilizan en la sobrecarga, estas funciones se denominan métodos de fábrica. Podemos usarlos para implementar el concepto de sobrecarga de constructores en Python.

Vea el código a continuación.

class delftstack(object):
    def __init__(self, a):
        self.ans = "a"

    @classmethod
    def first(cls):
        return "first"

    @classmethod
    def second(cls):
        return "second"


s1 = delftstack.first()

print(s1)

s2 = delftstack.second()

print(s2)

Producción :

first

second

Este método es la forma más Pythonica de sobrecargar un constructor. En el ejemplo anterior, el argumento cls del método de fábrica se refiere a la propia clase.

Artículo relacionado - Python Constructor