gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:09 26 4
gpt4 key购买 nike

我正在探索 Python 以及如何构建代码。

考虑以下项目结构

<project root>/controllers/user_controller.py

然后这个文件包含

class UserController:
def index():
# Something

从外部导入时,结果为

import controllers.user_controller

controller_instance = controllers.user_controller.UserController()

作为 Ruby 开发人员,如果 Controller 文件夹是加载路径的一部分,则执行 controllers.UserController() 或仅执行 UserController() 感觉更自然,例如在 Rails 中。

有没有一种(干净的)方法可以省略包名?我知道我可以from controllers.user_controller import UserController,但老实说我不喜欢冗长。

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

最佳答案

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

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

coolclass.py 的代码:

class CoolClass:
...

coolutil.py 的代码:

class CoolUtil:
...

_init_.py 的代码

from coolclass import CoolClass
from coolutil import CoolUtil

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

from mycoolmodule import CoolClass

关于python - 从 python 文件公开/导出类而不是模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49694063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com