-
07-07-2019 - |
题
无法弄清楚这一点。在Terminal中,我导入了一个实例化类的模块,我还没知道如何访问。当然,我总是可以在终端实例化:
Server=Data.ServerData()
然后我可以得到一个结果:
Server.Property().DefaultChart
但是,我想跳过该步骤,直接从已在模块中运行的实例获取结果。我认为在这种情况下Data.Server应该从我导入Data时加载Server实例:
Data.Server.Property().DefaultChart >>> AttributeError: 'module' object has no attribute 'Server'
那么如何从终端访问正在运行的实例?
解决方案
如果导入 Data.py
隐式创建 Data.ServerData
类的实例(有点可疑,但在某些情况下确定),那仍然没有告诉我们如何该模块选择命名该实例。在>>>
提示符处执行 dir(Data)
,以查看 Data
模块中定义的所有名称;如果你想查看哪些名称(如果有的话)具有 Data.ServerData
实例的值,例如:
>>> [n for n in dir(Data) if isinstance(getattr(Data,n), Data.ServerData)]
阅读 Data.py
的源代码可能更简单,但是您还有许多其他选项可以进行此类内省,以确切了解正在发生的事情(以及它与您的预期有何不同[[不知道在什么基础上!]]继续)。
不隶属于 StackOverflow