by Anonymous » 13 Feb 2025, 06:20
Bedenken wir, dass ich Funktionen mit diesen habe: < /p>
Code: Select all
def f1(a: int, **other_args):
...
def f2(a: int, b: str, c: dict):
...
def f3(a: int, b: tuple[str], **other_args):
...
Alle diese Funktionen beginnen mit einem int als Argument und dann andere Argumente, die optional sein können oder nicht.
Jetzt möchte ich sie in einer Liste speichern: < /p>
Code: Select all
l: list[?] = [f1, f2, f3]
< /code>
Ich weiß, dass ich so etwas wie < /p>
machen kannimport typing
param_spec = typing.ParamSpec('param_spec')
l: list[typing.Callable[typing.Concatenate[int, param_spec], typing.Any]] = [f1, f2, f3]
< /code>
Aber es würde bedeuten < /p>
l: list[typing.Callable[typing.Concatenate[int, ...], typing.Any]] = [f1, f2, f3]
Aber ich habe TypeError erhalten: Der letzte Parameter für die Verkettung sollte eine Paramspec -Variable sein.
Code: Select all
l: list[typing.Callable[[int, ...], typing.Any]] = [f1, f2, f3]
Aber in diesem Fall wird ... als *args betrachtet und nicht ** kWargs .
< Br /> Gibt es einen Typ, der diese Art von Funktionen beschreibt? Wie kann ich das tun?
Danke für deine Hilfe!
Bedenken wir, dass ich Funktionen mit diesen habe: < /p>
[code]def f1(a: int, **other_args):
...
def f2(a: int, b: str, c: dict):
...
def f3(a: int, b: tuple[str], **other_args):
...
[/code]
Alle diese Funktionen beginnen mit einem int als Argument und dann andere Argumente, die optional sein können oder nicht.
Jetzt möchte ich sie in einer Liste speichern: < /p>
[code]l: list[?] = [f1, f2, f3]
< /code>
Ich weiß, dass ich so etwas wie < /p>
machen kannimport typing
param_spec = typing.ParamSpec('param_spec')
l: list[typing.Callable[typing.Concatenate[int, param_spec], typing.Any]] = [f1, f2, f3]
< /code>
Aber es würde bedeuten < /p>
l: list[typing.Callable[typing.Concatenate[int, ...], typing.Any]] = [f1, f2, f3]
[/code]
Aber ich habe TypeError erhalten: Der letzte Parameter für die Verkettung sollte eine Paramspec -Variable sein.
[code]l: list[typing.Callable[[int, ...], typing.Any]] = [f1, f2, f3]
[/code]
Aber in diesem Fall wird ... als *args betrachtet und nicht ** kWargs .
< Br /> Gibt es einen Typ, der diese Art von Funktionen beschreibt? Wie kann ich das tun?
Danke für deine Hilfe!