Доступ к экземпляру из терминала - PullRequest
0 голосов
/ 13 сентября 2009

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

Server=Data.ServerData()

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

Server.Property().DefaultChart

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

Data.Server.Property().DefaultChart

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

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

1 Ответ

2 голосов
/ 13 сентября 2009

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

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

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

...