如何在Python模块中导入导入的子模块?

时间:2016-10-12 08:13:40

标签: python import module visibility

在我的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 *导入的内容。

1 个答案:

答案 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