Maison >développement back-end >Tutoriel Python >Comment plusieurs répartitions peuvent-elles simuler la surcharge de méthodes en Python ?
En Python, la surcharge de méthodes, où plusieurs fonctions portant le même nom acceptent différents types d'arguments, n'est pas prise en charge. Cependant, ce concept peut être répliqué à l'aide de la répartition multiple.
La répartition multiple permet de sélectionner dynamiquement les fonctions en fonction du type d'exécution de plusieurs arguments. Cela élimine le besoin de fonctions surchargées avec des noms différents.
Par exemple, vous pouvez avoir plusieurs fonctions add_bullet pour créer des puces avec des paramètres variables :
def add_bullet(sprite, start, headto, speed): # Bullet traveling from point A to B with a given speed def add_bullet(sprite, start, direction, speed): # Bullet traveling in a specified direction def add_bullet(sprite, start, curve, speed): # Bullet with a curved path
Le package multipledispatch fournit un moyen d'implémenter la répartition multiple en Python. Voici un exemple :
from multipledispatch import dispatch @dispatch(Sprite, Point, Point, int) def add_bullet(sprite, start, headto, speed): print("Called Version 1") @dispatch(Sprite, Point, Point, int, float) def add_bullet(sprite, start, headto, speed, acceleration): print("Called Version 2") sprite = Sprite('Turtle') start = Point(1, 2) speed = 100 add_bullet(sprite, start, Point(100, 100), speed) # Calls Version 1 add_bullet(sprite, start, Point(100, 100), speed, 5.0) # Calls Version 2
Dans cet exemple, plusieurs versions de la fonction add_bullet sont distribuées en fonction du type d'arguments fournis.
Plusieurs l'expédition offre plusieurs avantages par rapport à la méthode surcharge :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!