我们说我有一个组件对象,例如路由。
class Route:
def __init__(self, url='localhost', port=80)
...
我想提供一个路由管理器类,类似于Flask对@app.route
的处理,所以我可以创建并跟踪路由:
class Router:
def route(self, *args, **kwargs):
route = Route(*args, **kwargs)
self.routes.append(route)
是否有一种简单的方法可以使Router.route
方法的参数完成和/或文档自动反映Route.__init__
?
我尝试使用functools.wraps
,但它没有立即生效。也许我用错了?
class Router:
@wraps(Route.__init__)
def route(self, *args, **kwargs):
route = Route(*args, **kwargs)
self.routes.append(route)
编辑:我使用Python 3.6和最新的PyCharm(2016.3.2)。
答案 0 :(得分:2)
如果你这样做
import inspect
print(inspect.signature(Route.route))
print(help(Route.route))
你会看到functools.wraps
确实有效。然而,似乎PyCharm并不知道functools.wraps的含义。我建议将此报告为JetBrains的错误。