2017-03-06 13 views
0

永続的なメモ(ディスクへのメモ)を行うデコレータを作成したいと思います。私はこのデコレータを多くの機能に使用したいので、これらの機能のメモ帳データを保存する場所を決めなければなりません。 、Pythonの永続メモの宛先

  1. は、これら2つのソリューションでは、

しかし関数名でデータを保存する場所を

  • が自動的に決定memoizingデータを保存する場所の関数が決めてみましょう:私の周りGoogleで検索し、2つの解決策を見つけました名前(または目的地)が衝突した場合には、すべての機能が互いに「知っている」ことが必要であり、これは悪い設計の匂いである。

    このように、私の質問は、どのようにこのような衝突を避けることですか?

  • +2

    同様の問題を解決しなければならない[pickle module](https://docs.python.org/3/library/pickle.html)は、酸洗い機能に「完全修飾名」を使用しています。 –

    +0

    興味深い質問ですが、答えがありません。私はしかし、いくつかのコメントがあります。 :) 1.あなたが飾る機能は、装飾されていることを知らないはずですので、メモの宛先に関するコードやデータは入れてはいけません。 OTOHでは、デコレータは '__file__'と関数の' .__ name__'に基づいてデフォルトのデスティネーションを選ぶことができますが、別のデスティネーションパスを選択する引数を受け入れるか、デフォルトのデスティネーションを変更することもできます。 2.あなたのプログラムが同時に複数回実行できるように注意してください。 –

    答えて

    1

    モジュールがロードされたファイルへのパスである__file__の横または関連するファイルに保存します。私はそれが相対パスである場合があると信じているので、そのパスに直接メモを格納したり、絶対パスなどに変換することができます。

    関連する問題