从python文件中公开/导出类而不是模块

时间:2018-04-06 13:34:38

标签: python

我正在探索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文件,但我不想为每个类创建一个新模块。

1 个答案:

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