社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在不创建多个模块的情况下将python类分发到不同的源文件中?

Indominus • 6 年前 • 1958 次点击  

我有几个相关的课程放在这样一个包里:

\cool
  \__init__.py
    class CoolObj: ...
    class CoolStr(CoolObj): ...
    class CoolName(CoolStr): ...
    class CoolSound(CoolObj): ...

我用这样的课程:

import cool
cn = cool.CoolName()
...

这个 __init__.py 文件太长了。如果我能把每一个类放在它们各自的文件中,这样就好了:

\cool
    \__init__.py
    \cool_obj.py
        class CoolObj: ...
    \cool_str.py
        class CoolStr(CoolStr): ...
    \cool_name.py
        class CoolName(CoolStr): ...
    \cool_sound.py
        class CoolSound(CoolObj): ...

但是,这样,这些文件就变成 模块 我得用下面这些,有点冗长。

from cool import cool_obj, cool_str, cool_name, cool_sound
cn = cool_name.CoolName()

有没有什么东西可以把源代码放在单独的文件中,同时还能像我现在这样用简洁的语法来引用它们呢?

更妙的是,里面有什么 python 喜欢 部分类 在里面 C# 它允许您将同一类的实现分散到不同的文件中?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40846
文章 [ 1 ]  |  最新文章 6 年前
Andrew F
Reply   •   1 楼
Andrew F    7 年前

在你 __init__.py 您可以执行导入以缩短在其他地方使用它们的方式。所以一条线 π介子 可以是

from cool_name import CoolName

以后你可以

from cool import CoolName

你可能还想看看 __all__ 作为解决这个问题的另一种方法。你可以在 cool.__init__.py 模块,只要包含 阿尔法 可以显式指定要导出的对象。

关于部分类,我几乎可以肯定python通过常规类定义不支持这种功能。您可以在运行时将不同的函数注入到一个类中,从而将其组合在一起,但这肯定会很混乱。 This 答案是更深入地审视这条道路。