私は、Pythonでかなり大きなプロジェクトを作るために、プログラムMayaを使用しています。私は、GUIによって決定され、ユーザによる入力となる多数のオプションを持っています。 オプションの一例は、レンダリングする寸法です。しかし、私はまだGUIを作っていないし、まだテストの夢中です。gui変数をクラスに効率的に渡す方法は?
私が最終的に望むのは、複数のモジュール内のさまざまなクラス/メソッドによって変数を参照して使用できるようにする方法です。また、実際のGUIを持たずにすべてのコードをテストできる方法があることも覚えておいてください。
すべてのデータを各メソッドに直接渡す必要がありますか?私の問題は、メソッドfooが変数Aに依存しているが、メソッドバーがfooを呼び出す必要がある場合、呼び出されたどこからでもこれらの変数をFooに渡すことができます。
私が見た別の方法は、すべての変数を各クラスインスタンスに渡し、インスタンス変数を使用してアクセスすることでした。しかし、オプションが変更されたら、実行するたびに読み込みを再ロードする必要があります。
私が今使っているのは、変数を含む設定ファイルから変数を取得するモジュールです。そのモジュールをインポートし、スクリプト全体でインスタンス変数を使用します。
def __init__(self):
# Get and assign all instance variables.
options = config_section_map('Attrs', '%s\\ui_options.ini' %(data_path))
for k, v in options.items():
if v.lower() == 'none':
options[k] = None
self.check_all = int(options['check_all'])
self.control_group = options['control_group']
誰もがアドバイスを持っているのですか、またはui変数の取得/使用を扱う正しい方向に私を指摘できますか?
あなたのロジックとUIの間のハイレベルなインターフェース層である 'Session'または' Interface'クラスを考えてみてください。独自のメソッドまたは他のクラスのメソッドを呼び出すことによって、必要なすべての変数管理を処理できます。代わりに、他のクラスへのアクセスを直接提供することもできます。コードを実行するときは、セッションを開始してすべてのロジックを初期化し、そのセッションにセッションを渡してUIを起動します。あなたのコードをヘッドレスで使用する場合は、UIレイヤーを削除して直接セッションと対話するか(テスト用)、別の特殊レイヤー(CLI)を追加するだけです。 – mapofemergence
ありがとう、私はそれを試してみよう! –