J'ai une fonction Python qui prend plusieurs arguments. Certains de ces arguments pourraient ê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
travers h
sont des chaînes qui ont chacune des significations différentes. 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 (ce sont mes choix).
Ce serait formidable 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 discordance d'argument.
En ce moment, j'envoie des chaînes vides à la place des premiers arguments manquants en tant qu'espaces réservés. Je voudrais pouvoir appeler une fonction en utilisant simplement des valeurs réelles.
Y a-t-il un moyen de faire ça? Puis-je transmettre une liste au lieu de la liste d'arguments?
En ce moment, le prototype utilisant des ctypes ressemble à ceci:
_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]