5

私が書いている Python モジュールには、約 20 個の興味深い型とグローバル メソッドしかありませんが、多くの定数と例外があります (ロケール用の約 70 個の定数、エンコーディング用の約 60 個の定数、20 個の書式設定属性、200 個以上の例外など)。その結果help()、このモジュールでは約 16,000 行のテキストが生成され、各例外のほぼ同一の説明が散らばっています。定数はそれほど厳しいものではありませんが、ナビゲートするのは依然として困難です。

そのようなモジュールを整理するためのpythonicな方法は何でしょうか? そのままにして、他のドキュメントに依存しますか? 定数を別々の辞書に移動しますか? サブモジュールに?必要に応じて、それらをクラスレベルの定数として追加しますか?

これは C 拡張であるため、実際のサブモジュールをここに簡単に追加できないことに注意してください。sys.modulesオブジェクトにモジュールがあるかどうかを実際にはチェックしないと聞いたので、そこに辞書を追加できます。このようにして、モジュールをインポートするときにmymodule.locales、 、mymodule.encoding、およびを作成mymodule.exceptionsして追加することができます。sys.modulesこれは良いアイデアでしょうか、それともハックすぎますか?

4

1 に答える 1

1

問題を解決するには、実際には 2 つのオプションがあります。最初のアプローチは、すべての定数と例外を分類し、より広範なカテゴリを少数にすることです。これにより、必要なカテゴリに簡単に移動できます。ディクショナリ (またはネストされたディクショナリ) は、タイトルを含むグループを維持できるため、これを実装するのに適した方法です。管理をもう少しカスタマイズしたい場合にこれを行う 2 つ目の方法は、辞書のように振る舞うクラスを作成することです。子オブジェクトのリストがあります。このようにして、いくつかの同様の例外を処理する新しい例外クラスなど、独自のアクセスしやすいメソッドを作成して、すべての定数と例外をナビゲートできます。ソースへのアクセスを必要とする、よりクリーンにするもう1つの方法は、これらの例外をすべて、同様の問題のグループをそれぞれ処理できる小さな例外グループにします。これはおそらく例外を処理するためのより良い方法ですが、これを変更するためにソースにアクセスできない場合があります。

于 2013-11-22T21:33:57.393 に答える