Доступ к экземпляру из терминала
-
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
class (несколько сомнительно, но в некоторых случаях приемлемо), но это по-прежнему ничего не говорит нам о том, как этот модуль решил назвать этот экземпляр.Делать dir(Data)
в >>>
запрос на просмотр всех имен, определенных в Data
модуль;если вы хотите увидеть, какие имена (если таковые имеются!) имеют значения, которые являются экземплярами Data.ServerData
, например:
>>> [n for n in dir(Data) if isinstance(getattr(Data,n), Data.ServerData)]
Чтение Data.py
исходный код может быть проще, но у вас есть много других возможностей для такого самоанализа, чтобы точно выяснить, что происходит (и чем это отличается от того, что вы ОЖИДАЛИ [[не уверены, на каком основании!]]) происходит).