从终端访问实例

时间:2009-09-13 17:14:22

标签: python class module instance interactive

无法弄清楚这一点。在Terminal中,我导入了一个实例化类的模块,我还没知道如何访问。当然,我总是可以在终端实例化:

Server=Data.ServerData()

然后我可以得到一个结果:

Server.Property().DefaultChart

但是,我想跳过该步骤,直接从已在模块中运行的实例获取结果。我认为在这种情况下Data.Server应该从我导入Data时加载Server实例:

Data.Server.Property().DefaultChart

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

那么如何从终端访问正在运行的实例?

1 个答案:

答案 0 :(得分:2)

如果导入Data.py隐式创建Data.ServerData类的实例(有些可疑,但在某些情况下确定),那仍然没有告诉我们该模块如何选择命名该实例。在dir(Data)提示符下>>>查看Data模块中定义的所有名称;如果你想查看哪些名称(如果有的话!)的值是Data.ServerData的实例,例如:

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

阅读Data.py的源代码可能更简单,但是您还有许多其他选项可以进行此类内省,以确切了解正在发生的事情(以及它与您的预期有何不同[[不确定基于什么] !]]继续)。