2017-03-11 4 views
0

私はコンポーネントオブジェクトを持っているとしましょう。ルート。メソッドを保持し、引数を保持するPythonラップコンポーネントコンストラクタ

class Route: 
    def __init__(self, url='localhost', port=80) 
     ... 

そして私は、フラスコが@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) 

EDIT:私は、最新PyCharm(2016年3月2日)でのPython 3.6を使用しています。

+0

どのIDEを完成させたいですか?どのようなPythonバージョンを使用していますか?古いAPIはコードオブジェクトを直接参照します。それらを欺く方法はありません。より新しいコードは高度なプロトコルを使用します。 –

+0

私はワンサイズの解決策を望んでいましたが、セットアップで質問を更新しました。特定のソリューションは、ソリューションよりも優れています。 – VillasV

答えて

1

あなたは

import inspect 
print(inspect.signature(Route.route)) 
print(help(Route.route)) 

を行う場合は、functools.wrapsが実際に作業を行うことがわかります。しかし、PyCharmはfunctools.wrapsの意味を認識していないようです。これをバグとしてJetBrainsに報告することをお勧めします。

+0

あなたはそれを再現しましたか?私は報告する前に確かめたい。 – VillasV

+0

はい、しました。 PyCharmはfunctools.wrapsをそのように認識しません。 –

+0

この機能を要求するPyCharmバグ[PY-23067](https://youtrack.jetbrains.com/issue/PY-23067#tab=Comments&u=1492615536​​736)があります。 @VillasV - 機能が必要な場合は、それに投票してください。 – mtd

関連する問題