Sobrecargar un constructor en Python
- Uso de múltiples argumentos para sobrecargar constructores en Python
-
Utilice los decoradores
@classmethod
para 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.