Eu tenho uma função Python que leva vários argumentos. Alguns desses argumentos podem ser omitidos em alguns cenários.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Os argumentos d
através h
são cadeias que cada um tem diferentes significados. É importante que eu possa escolher quais parâmetros opcionais devem passar em qualquer combinação. Por exemplo,, (a, b, C, d, e)
ou (a, b, C, g, h)
, ou (a, b, C, d, e, f
, ou todos eles (estas são as minhas escolhas).
Seria ótimo se eu pudesse sobrecarregar a função - mas li que o Python não suporta sobrecarga. Tentei inserir alguns dos argumentos int necessários na lista - e obtive um erro de incompatibilidade de argumento.
No momento, estou enviando seqüências de caracteres vazias no lugar dos primeiros argumentos ausentes como espaços reservados. Eu gostaria de poder chamar uma função usando apenas valores reais.
Há alguma maneira de fazer isso? Eu poderia passar uma lista em vez da lista de argumentos?
No momento, o protótipo usando ctypes se parece com:
_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]