Je sais que Python ne prend pas en charge la surcharge de méthode, mais j'ai couru dans un problème que je n'arrive pas à résoudre dans un joli Pythonic.
Je suis de faire un jeu où un personnage doit tirer une variété de balles, mais comment puis-je écrire de différentes fonctions pour la création de ces balles? Par exemple, supposons que j'ai une fonction qui crée une balle de voyager d'Un point a à B avec une vitesse donnée. Je voudrais écrire une fonction comme ceci:
def add_bullet(sprite, start, headto, speed):
... Code ...
Mais je veux écrire d'autres fonctions pour la création de balles comme:
def add_bullet(sprite, start, direction, speed):
def add_bullet(sprite, start, headto, spead, acceleration):
def add_bullet(sprite, script): # For bullets that are controlled by a script
def add_bullet(sprite, curve, speed): # for bullets with curved paths
... And so on ...
Et ainsi de suite avec de nombreuses variations. Est-il un meilleur moyen de le faire sans l'aide de sorte de nombreux mot-clé arguments cause de son arriver un peu laid rapide. Renommer chaque fonction est assez mauvais aussi, parce que vous obtenez soit add_bullet1
, add_bullet2
ou add_bullet_with_really_long_name
.
Pour répondre à certaines des réponses:
Non, je ne peux pas créer une Balle hiérarchie de classe, car c'est trop lent. Le code actuel pour la gestion de balles est dans C et mes fonctions sont des wrappers autour de C API.
Je connais le mot-clé arguments, mais la vérification de toutes sortes de combinaisons de paramètres est plus ennuyeux, mais les arguments par défaut aider à attribuer comme
acceleration=0