0

これを理解することはできません。ターミナルで、アクセス方法がわからないクラスをインスタンス化するモジュールをインポートします。もちろん、ターミナルでいつでもインスタンス化できます。

サーバー=Data.ServerData()

次に、結果を取得できます。

Server.Property().DefaultChart

ただし、モジュールで既に実行されているインスタンスから直接結果を取得するステップをスキップしたいと思います。この場合、Data.Server は、Data をインポートしたときから Server インスタンスをロードする必要があると思います。

Data.Server.Property().DefaultChart

>>> AttributeError: 'module' オブジェクトに属性 'Server' がありません

では、ターミナルから実行中のインスタンスにアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

2

インポートによってクラス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方が簡単かもしれませんが、そのようなイントロスペクションで何が起こっているかを正確に知るための他の多くのオプションがあります (そして、あなたが期待しているものとどのように異なるのか [[何の根拠でわからない!]] 起こっているのか) .

于 2009-09-13T17:46:48.460 に答える