ターミナルからインスタンスにアクセスする
-
07-07-2019 - |
質問
これを理解できません。ターミナルで、クラスをインスタンス化するモジュールをインポートしますが、アクセス方法はわかりません。もちろん、私はいつでもターミナルでインスタンス化できます:
Server=Data.ServerData()
その後、結果を得ることができます:
Server.Property().DefaultChart
ただし、モジュールで既に実行されているインスタンスから直接結果を取得するステップをスキップします。この場合のData.Serverは、データをインポートしたときからサーバーインスタンスをロードするはずだと思います。
Data.Server.Property().DefaultChart >>> AttributeError: 'module' object has no attribute 'Server'
では、ターミナルから実行中のインスタンスにアクセスするにはどうすればよいですか
解決
Data.py
をインポートすると、 Data.ServerData
クラスのインスタンスが暗黙的に作成されます(多少疑わしいですが、場合によっては問題ありません)。そのモジュールは、その1つのインスタンスに名前を付けることを選択しました。 >>>
プロンプトで dir(Data)
を実行して、 Data
モジュールで定義されているすべての名前を表示します。 Data.ServerData
のインスタンスである値を持つ名前(ある場合)を確認する場合:例:
>>> [n for n in dir(Data) if isinstance(getattr(Data,n), Data.ServerData)]
Data.py
のソースコードを読む方が簡単かもしれませんが、何が起こっているのか(そして期待したものとどのように違うのかを知るために、そのような内省のための他の多くのオプションがあります[[何に基づいているのかわからない!]]
所属していません StackOverflow