Surcharger un constructeur en Python
- Utilisation de plusieurs arguments pour surcharger les constructeurs en Python
-
Utilisez les décorateurs
@classmethod
pour surcharger un constructeur en Python
Plusieurs constructeurs aident à personnaliser notre classe personnalisée en fonction de ses paramètres. En utilisant différents paramètres, nous pouvons déclencher différents constructeurs.
Les constructeurs multiples ne sont pas directement pris en charge dans Python. Lorsque plusieurs constructeurs sont fournis dans la classe, le dernier remplace le précédent. Mais il existe d’autres moyens de surcharger un constructeur en Python.
Nous allons discuter de ces méthodes dans cet article.
Utilisation de plusieurs arguments pour surcharger les constructeurs en Python
La surcharge de fonction fait référence au fait d’avoir différentes fonctions avec le même nom avec différents types de paramètres. Nous pouvons surcharger un constructeur en déclarant plusieurs conditions, chaque condition étant basée sur un ensemble d’arguments différent.
Par exemple,
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)
Production:
1
Hello from Delft
Dans l’exemple ci-dessus, nous avons deux types de paramètres dans le constructeur. L’un est une chaîne et l’autre est un entier. La construction est surchargée pour donner la sortie en fonction du type d’arguments fournis.
On peut aussi surcharger un constructeur en fonction du nombre d’arguments fournis. Cette méthode est similaire à l’exemple précédent.
Voir le code ci-dessous.
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)
Production:
More than three
Less than three
Utilisez les décorateurs @classmethod
pour surcharger un constructeur en Python
Le décorateur @classmethod
permet d’accéder à la fonction sans instancier de classe. De telles méthodes sont accessibles par la classe elle-même et via ses instances. Lorsqu’elles sont utilisées en surcharge, ces fonctions sont appelées méthodes d’usine. Nous pouvons les utiliser pour implémenter le concept de surcharge de constructeur en Python.
Voir le code ci-dessous.
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)
Production:
first
second
Cette méthode est la manière la plus pythonique de surcharger un constructeur. Dans l’exemple ci-dessus, l’argument cls
de la méthode factory fait référence à la classe elle-même.