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

2024-04-19 03:53:23 发布

您现在位置: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文件夹是加载路径的一部分(比如在Rails中),那么做controller.UserController()或者只做UserController()会更自然。

有没有一种(干净的)方法可以省略包名?我知道我能做到,但我真的不喜欢冗长。

我希望每个类有一个python文件,但我不希望每个类都有一个新模块。


Tags: 文件项目代码pyprojectindexdefroot
1条回答
网友
1楼 · 发布于 2024-04-19 03:53:23

一种方法是将模块导入父模块。换句话说,假设您有这样的目录结构:

mycoolmodule/
mycoolmodule/__init__.py
mycoolmodule/coolclass.py
mycoolmodule/coolutil.py

coolclass.py的代码:

class CoolClass(object):
    ...

coolutil.py的代码:

class CoolUtil(object):
    ...

初始化py的代码

from coolclass import CoolClass
from coolutil import CoolUtil

因为您在包级别提供了它们,所以现在可以直接从那里导入它们。例如,这将起作用:

from mycoolmodule import CoolClass

相关问题 更多 >