J'ai une fonction Python qui prend plusieurs arguments. Certains de ces arguments peuvent être omis dans certains scénarios.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Les arguments d
par le biais de h
sont des chaînes de caractères qui ont chacune une signification différente. Il est important que je puisse choisir les paramètres facultatifs à passer dans n'importe quelle combinaison. Par exemple, (a, b, C, d, e)
ou (a, b, C, g, h)
ou (a, b, C, d, e, f
ou tous ces éléments (ce sont mes choix).
Ce serait génial si je pouvais surcharger la fonction, mais j'ai lu que Python ne prend pas en charge la surcharge. J'ai essayé d'insérer certains des arguments int requis dans la liste - et j'ai obtenu une erreur de non-concordance des arguments.
Pour l'instant, j'envoie des chaînes vides à la place des quelques premiers arguments manquants comme caractères de remplacement. J'aimerais pouvoir appeler une fonction en utilisant uniquement les valeurs réelles.
Y a-t-il un moyen de faire cela ? Pourrais-je passer une liste au lieu de la liste d'arguments ?
Actuellement, le prototype utilisant ctypes ressemble à quelque chose comme :
_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]
4 votes
Re W