Mam funkcję Python, która pobiera kilka argumentów. Niektóre z tych argumentów można pominąć w niektórych scenariuszach.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Argumenty d
za h
są ciągi których każdy ma różne znaczenia. Ważne jest, że mogę wybrać opcjonalne parametry do przekazania w dowolnej kombinacji. Na przykład, (a, b, C, d, e)
lub (a, b, C, g, h)
, lub (a, b, C, d, e, f
, lub wszystkie z nich (to są moje wybory).
Byłoby wspaniale, gdybym mógł przeciążyć funkcję - ale przeczytałem, że Python nie obsługuje przeciążania. Próbowałem wstawić niektóre wymagane argumenty int na liście - i wystąpił błąd niedopasowania argumentu.
W tej chwili wysyłam puste ciągi zamiast kilku pierwszych brakujących argumentów jako symbole zastępcze. Chciałbym móc wywoływać funkcję przy użyciu rzeczywistych wartości.
Czy jest na to sposób? Czy mogę przekazać listę zamiast listy argumentów?
W tej chwili prototyp używający ctypów wygląda mniej więcej tak:
_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]