实际上还是一个函数 提供两种不同的用法,以便指示python typehit 按你的预期工作 from typing import Any, Callable, Optional, TypeVar, overload F = TypeVar("F", bound=Callable[..., Any]) # python 的装饰器实际上是一个以函数为参数的函数 class LogDecorator: @overload def log_it(self, func: F) -> F: ... @overload def log_it( self, func: None = None, *, name: Optional[str] = None ) -> Callable[[F], F]: ... def log_it( self, func: Optional[F] = None, *, name: Optional[str] = None ) -> Callable[[F], F]: def decorator(func: F) -> F: print(name, func) return func if func is None: return decorator return decorator(func) log_decorator = LogDecorator() log_it = log_decorator.log_it @log_it def f(): print("f") f() @log_it(name="g") def g(): print("g") g() 学习自 langfuse Prompt Management 的 python SDK