Вопрос

Не могу этого понять.В Терминале я импортирую модуль, который создает экземпляр класса, к которому я не понял, как получить доступ.Конечно, я всегда могу создать экземпляр в Терминале:

Server=Data.ServerData()

Тогда я могу получить результат:

Server.Property().DefaultChart

Однако я хочу пропустить этот шаг и получить результат непосредственно из экземпляра, уже запущенного в модуле.Я думаю, что Data.Server в этом случае должен загрузить экземпляр сервера, когда я импортировал данные:

Data.Server.Property().DefaultChart

>>> AttributeError: 'module' object has no attribute 'Server'

Итак, как получить доступ к работающему экземпляру из терминала?

Это было полезно?

Решение

Если импортировать Data.py неявно создает экземпляр Data.ServerData class (несколько сомнительно, но в некоторых случаях приемлемо), но это по-прежнему ничего не говорит нам о том, как этот модуль решил назвать этот экземпляр.Делать dir(Data) в >>> запрос на просмотр всех имен, определенных в Data модуль;если вы хотите увидеть, какие имена (если таковые имеются!) имеют значения, которые являются экземплярами Data.ServerData, например:

>>> [n for n in dir(Data) if isinstance(getattr(Data,n), Data.ServerData)]

Чтение Data.pyисходный код может быть проще, но у вас есть много других возможностей для такого самоанализа, чтобы точно выяснить, что происходит (и чем это отличается от того, что вы ОЖИДАЛИ [[не уверены, на каком основании!]]) происходит).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top