我正在探索Python以及如何构建代码。
考虑以下项目结构
<project root>/controllers/user_controller.py
此文件包含
class UserController:
def index():
# Something
从外部导入时,最终为
import controllers.user_controller
controller_instance = controller.user_controller.UserController()
作为Ruby开发人员,如果controllers文件夹是加载路径的一部分,那么执行controller.UserController()
或UserController()
会感觉更自然,就像在Rails中一样。
是否有(干净的)省略包名称的方法?我知道我可以做from controllers.user_controller import UserController
,但说实话,我并不喜欢这种冗长。
我希望每个类都有一个python文件,但我不想为每个类创建一个新模块。
答案 0 :(得分:6)
执行此操作的一种方法是将模块导入父模块。换句话说,假设你有一个像这样的目录结构:
mycoolmodule/
mycoolmodule/__init__.py
mycoolmodule/coolclass.py
mycoolmodule/coolutil.py
coolclass.py 的代码:
class CoolClass(object):
...
coolutil.py 的代码:
class CoolUtil(object):
...
__ init __。py
的代码from coolclass import CoolClass
from coolutil import CoolUtil
由于您在包级别提供了它们,因此您现在可以直接从那里导入它们。例如,这将起作用:
from mycoolmodule import CoolClass