私は現在、かなり大きな Perl を移植している最中です。問題は、コードをuse
ing で使用できるようにするために Perl の小さなトリックを使用していることです。Python でもほぼ同じことを行い、コードベースをimport
ing の 1 つの大きなモジュールにしました。私は長い間 Python についてしっかりと理解してきましたが、内部状態を維持しながらそれ自体の他の部分にアクセスする必要がある Python で書かれた大規模なプロジェクトの経験はありません。
全体を 1 行で単純にインポートすることはまだ試していません ( import core
) が、現在、最善の方法で作業を行っていないことはわかっています。以下は、すべてを動かすマスター スクリプトの例です。
self.Benchmark = Benchmark(self)
self.Exceptions = Exceptions
self.Settings = Settings(self)
self.Cache = Cache(self)
self.Deal = Deal(self)
self.Utils = Utils(self)
self.FileParsers = FileParsers(self)
self.Network = Network(self)
self.Plugins = Plugins(self)
self.Misc = Misc(self)
動作しますが、満足していません。現在、マスター クラス スクリプトは、core
モジュールの各部分をインポートし、含まれているクラスのインスタンスを作成し、それらのクラスで自分自身を引数として渡し__init__
ます。そのようです:
class FileParsers:
def __init__(self, parent):
self.parent = parent
これで、そのクラスのコードは、親クラスを介して残りのコードベース全体にアクセスできるようになります。
self.parent.Settings.loadSysConfig()
私の質問は次のとおりです。上記を考慮して、プロジェクトを再編成し、コードをリファクタリングして、他のすべてにアクセスする現在の機能を保持するための最良の方法は何でしょうか? コードは非常に重要ではないため、内部データの整合性についてはそれほど心配していません。親クラスをそのような醜い方法で処理する必要があるのは好きではありません。また、これらの長いチェーンもコードの速度を低下させます。
編集:おっと、これらを忘れました:両方のプロジェクトのSVNリポジトリへのリンク。私のものはここにあり、私が移植しているプロジェクトはここにあります。