从python文件中公开/导出类而不是模块
我正在探索Python以及如何构造代码 考虑以下项目结构从python文件中公开/导出类而不是模块,python,Python,我正在探索Python以及如何构造代码 考虑以下项目结构 <project root>/controllers/user_controller.py 从外部导入此文件时,其结果为 import controllers.user_controller controller_instance = controllers.user_controller.UserController() 作为一名Ruby开发人员,如果控制器文件夹是加载路径的一部分,那么执行controllers.Us
<project root>/controllers/user_controller.py
从外部导入此文件时,其结果为
import controllers.user_controller
controller_instance = controllers.user_controller.UserController()
作为一名Ruby开发人员,如果控制器文件夹是加载路径的一部分,那么执行controllers.UserController()
或者只执行UserController()
,感觉更自然,就像在Rails中一样
有没有(干净的)方法可以省略包名?我知道我可以从controllers.user\u controller导入UserController,但我真的不喜欢冗长
我希望每个类有一个python文件,但我不希望每个类都有一个新模块。一种方法就是将模块导入父模块。换句话说,假设您有一个这样的目录结构:
mycoolmodule/
mycoolmodule/__init__.py
mycoolmodule/coolclass.py
mycoolmodule/coolutil.py
coolclass.py的代码:
class CoolClass(object):
...
class CoolUtil(object):
...
coolutil.py的代码:
class CoolClass(object):
...
class CoolUtil(object):
...
\uuuu init\uuuu.py的代码
from coolclass import CoolClass
from coolutil import CoolUtil
由于您在包级别提供了它们,现在可以直接从那里导入它们。例如,这将起作用:
from mycoolmodule import CoolClass
您是否反对将controllers.user\u controller导入为ctrl?是的,我认为ctrl.UserController()读起来不太好。