【发布时间】:2015-12-25 13:47:48
【问题描述】:
我有以下模块包组织
models
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-34.pyc
│ ├── model.cpython-34.pyc
│ └── user.cpython-34.pyc
└── user.py
1 directory, 5 files
以下是我__init__.py的内容:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
from .user import User
正在运行
>>> from models import *
>>> dir()
['SQLAlchemy', 'User', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'db', 'user']
请注意,
user也在列表中,而我在__init__.py中明确指定了from .user import User。
我无法理解这种行为,因为如果我只是这样做
>>> from models.user import User
>>> dir()
['User', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
我只收到User。
如何使用__init__.py 文件实现相同的结果,即如何导入仅 db 和User 和不 user。 p>
注意:
user是模块user.py,User是其中的类。
【问题讨论】:
-
不要
import *。它将导入模块公共命名空间内的所有内容。 -
@dirn 我知道,但
user不在模块的公共命名空间内,对吧?
标签: python-3.x flask sqlalchemy flask-sqlalchemy