在我的Python模块中,我经常使用datetime
等子模块。问题是这些模块可以从外部访问:
# module foo
import datetime
def foosay(a):
print "Foo say: %s" % a
来自IPython:
import foo
foo.datetime.datetime.now()
我想知道如何正确隐藏作为foo
内部业务的子模块。
我天真地想过import datetime as _datetime
甚至import datetime as __datetime
,但这不是一个非常令人愉快的解决方案。我还阅读了__all__
,但它仅涉及使用from foo import *
导入的内容。
答案 0 :(得分:1)
您可以在模块foo中使用它的函数中执行导入日期时间:
Option Explicit
Dim bMakeItHappen As Boolean
Private Sub ComboBox1_DropButtonClick()
bMakeItHappen = True
End Sub
Private Sub ComboBox1_Change()
If bMakeItHappen Then
MsgBox ("hello") '<-- i.e. the code to be executed at "actual" combobox value change
bMakeItHappen = False
End If
End Sub
现在导入foo不会导入日期时间。
编辑:您还可以通过不导入整个日期时间模块来减少内存占用量,只需要导入所需的方法/功能:
def foodate():
import datetime
print datetime.datetime.now()
def foosay(a):
print "Foo say: %s" % a