2016-10-12 17 views
1

私のPythonモジュールでは、しばしばdatetimeのようなサブモジュールを使用します。問題は、これらのモジュールは外部からアクセス可能になるということです。インポートされたサブモジュールをPythonモジュールでインポートしない方法は?

# 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

あなたはモジュールfooの中でそれを使用して関数内のインポート日時を行うことができます。

def foodate(): 
    import datetime 
    print datetime.datetime.now() 

def foosay(a): 
    print "Foo say: %s" % a 

今インポートfooが日時をインポートしません。

EDIT:あなたはまた、全体のdatetimeモジュールをインポートしないことにより、あなたが必要とする唯一の方法/機能をメモリフットプリントを減らすことができます。

from datetime.datetime import now 
+0

はそれが悪い習慣と標準液よりも消費する多くのリソースですか? – nowox

+0

はい、あなたがfoodate()を呼び出すたびにimportステートメントを処理するためです。 – TaipanRex

+0

しかし、それは適切な解決策ではありません。 – nowox

関連する問題