Pythonの_init__.pyファイル小議(二)
2079 ワード
前述したように、
以前はtornado、
Init.pyのこれらの仕事は、次のようにconnectを使用することができます.
でも私はstyle 2のほうが好きです.深い憎しみの
__init__.py
ファイルには、__all__
を介して外部で使用されるパケットをインポートすることができる.しかし、私はどうして情を得ないのですか.以前はtornado、
__init__.py
は基本的に空のファイルであり、現在のディレクトリがpython moduleであることを特徴付けるために使用されていました.その後flask,djangoを用いて多くの項目で__init__.py
にコードが書かれていることが分かった.次のコードで説明します.Init.pyのこれらの仕事は、次のようにconnectを使用することができます.
from mongoengine import connect # style 1
__init__.py
の構成がない場合は、次の必要があります.from mongoengine.connection import connect # style 2
でも私はstyle 2のほうが好きです.深い憎しみの
import *
はさておき、ソースを読みに行ったときから葛藤していました.sytle 1を見たとき、私は愚かでした.ソースコードのmongoengineディレクトリの下にconnect.pyというファイルがないからです.mongoengineディレクトリの下にpyファイルがたくさんありますが、connectメソッドがどのpyファイルに属しているのか分かりません.# filename: mongoengine/__init__.py
# url: https://github.com/jiaxiaolei/mongoengine/blob/master/mongoengine/__init__.py
# Import submodules so that we can expose their __all__
from mongoengine import connection
from mongoengine import document
from mongoengine import errors
from mongoengine import fields
from mongoengine import queryset
from mongoengine import signals
# Import everything from each submodule so that it can be accessed via
# mongoengine, e.g. instead of `from mongoengine.connection import connect`,
# users can simply use `from mongoengine import connect`, or even
# `from mongoengine import *` and then `connect('testdb')`.
from mongoengine.connection import *
from mongoengine.document import *
from mongoengine.errors import *
from mongoengine.fields import *
from mongoengine.queryset import *
from mongoengine.signals import *
__all__ = (list(document.__all__) + list(fields.__all__) +
list(connection.__all__) + list(queryset.__all__) +
list(signals.__all__) + list(errors.__all__))
VERSION = (0, 14, 0)
def get_version():
"""Return the VERSION as a string, e.g. for VERSION == (0, 10, 7),
return '0.10.7'.
"""
return '.'.join(map(str, VERSION))
__version__ = get_version()