2009-09-13 220 views
0

無法弄清楚。在終端中,我導入了一個實例化類的模塊,我還沒有弄清楚如何訪問。當然,我可以隨時實例化終端:從終端訪問實例

 
Server=Data.ServerData() 

然後我就可以得到一個結果:

 
Server.Property().DefaultChart 

不過,我想跳過這一步,直接從實例已經在運行得到結果模塊。我覺得Data.Server在這種情況下,當我輸入的數據應該從加載服務器實例:

 
Data.Server.Property().DefaultChart 

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

因此,如何從終端接入正在運行的實例?

回答

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的源代碼可能比較簡單,但是你有這樣的反省到許多其他選項找出究竟發生了什麼(以及它與你預期的[[不知道在什麼基礎上!]]會有什麼不同)。

+0

謝謝,這樣的n00b!如果__name __ ==「__ main__」: 包裝器,我已經在 中實例化了,這就是它在瀏覽器中工作的原因,但不在終端中。 這些都是很好的診斷工具。 – Gnarlodious 2009-09-13 18:19:41

+0

@Gnarlodious:請接受這個答案。點擊綠色複選標記。 – 2009-09-14 00:02:41