Python-Typisierung für einen generischen Instanzmethoden-Dekorator [Duplikat]
Posted: 24 Dec 2024, 20:09
Ich erstelle einen generischen Dekorator für eine Instanzmethode:
Alles funktioniert gut, bis auf die Eingabe. Wenn ich es wie folgt eingebe:
Wenn ich den Decorator verwende, erhalte ich Fehlermeldungen von mypy wie zum Beispiel:
Sollten diese nicht mit der Menge von Any erlaubt sein? Was ist zu tun, um das Problem zu beheben?
Das kann natürlich nicht funktionsspezifisch sein, der Dekorator wird auf viele verschiedene Funktionen angewendet.
Code: Select all
def my_dec(func):
def wrapper(self, *args, **kwargs):
print("do something")
return func(self, *args, **kwargs)
return wrapper
Code: Select all
def my_dec(
func: Callable[[*Tuple[Any, ...]], Any]
) -> Callable[[*Tuple[Any, ...]], Any]:
def wrapper(
self: Any,
*args: Any,
**kwargs: Any
) -> Any:
print("do something")
return func(self, *args, **kwargs)
return wrapper
Code: Select all
Argument 1 to "my_dec" has incompatible type
"Callable[[datetime, datetime | str, str | NoInput], float | None]";
expected "Callable[[VarArg(Any)], Any]" [arg-type]
Das kann natürlich nicht funktionsspezifisch sein, der Dekorator wird auf viele verschiedene Funktionen angewendet.