有了這個簡單的模塊:如何從iPython中的命名空間隱藏導入的模塊?
#!/usr/bin/python
#file: foo.py
import ctypes
class Foo(ctypes.Structure):
pass
在IPython中:
In [1]: import foo
In [2]: foo.
Foo
ctypes
是模塊foo
內部使用的模塊,它不應該被顯示給用戶。我們的目標是通過ipython
隱藏以提供自動完成功能此解決方案是否太麻煩?
import ctypes as __ctypes
我會說這太麻煩了,是的(最多使用一個下劃線)。 *爲什麼要隱藏模塊名稱空間中的一些名稱?您是否考慮過使用'__all__'(請參閱http://stackoverflow.com/q/44834/3001761),如果這是通配符導入的問題? – jonrsharpe
如果用戶不知道「ctypes」是我的模塊使用的模塊,但不是它的一個功能,用戶可能會感到困惑。我期待用戶使用自動完成來查看他可以使用什麼對象。一種解決方案是在所有可用方法所在的模塊內創建一個靜態類。我認爲這不是一個更好的解決方案 – nowox
爲什麼你認爲任何人會被這個困惑?不需要靜態類,你可以公開一個應該使用的屬性名稱列表(就像'__all__',甚至可以使用這個名稱!),但是隻要你有任何導入,並且很少被證明是一個棘手的問題。 – jonrsharpe