You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python库开发:如何无前缀导入多个自定义类?

实现无前缀导入Python库类的规范方案

嘿,作为编程新手能想到封装自己的库已经超棒啦!我来给你讲清楚怎么实现不用前缀直接调用类的需求,都是Python社区公认的规范做法~

首先,咱们先理清楚库的基础结构。假设你现在所有类都放在一个叫core_classes.py的文件里,那你的库目录应该是这样的:

mylibrary/
├── __init__.py
└── core_classes.py

(这里的core_classes.py可以换成你自己的文件名,比如my_classes.py都没问题)

关键步骤:用__init__.py暴露公共API

__init__.py是Python识别目录为库的标志,同时它也是用来定义对外暴露的接口的核心文件。要实现无前缀调用,你只需要在这个文件里把需要让用户直接使用的类导出来就行。

比如你的core_classes.py里定义了MyClassA、MyClassB两个类,那就在__init__.py里写:

# mylibrary/__init__.py
from .core_classes import MyClassA, MyClassB

这样一来,用户使用你的库时,就可以直接这样导入:

# 用户的代码里
from mylibrary import MyClassA, MyClassB

# 直接实例化,不用加前缀!
obj = MyClassA()

如果用户想更省事,甚至可以用from mylibrary import *直接导入所有暴露的类,但我更推荐明确列出要导入的类,避免命名冲突,也更清晰。

为什么这是最优方案?

  • 既保留了你原来的单个文件结构(所有类都在core_classes.py里,逻辑集中,维护起来方便),又通过__init__.py把内部实现和对外接口分开了。
  • 以后如果你的类变多了,需要拆分到多个文件里,比如把MyClassA移到class_a.py,MyClassB移到class_b.py,只需要修改__init__.py的导入语句,用户的代码完全不用改——这就是封装的好处!
  • 符合Python库的设计规范,其他开发者用你的库时也能快速理解哪些是可以直接用的公共类。

不推荐的做法

虽然你可以直接把所有类都写在__init__.py里,这样也能直接导入,但这种方式会让__init__.py变得臃肿,不利于后续维护和扩展,而且把内部实现和接口混在一起,不符合代码组织的最佳实践,所以不建议这么做。

本地测试小技巧

如果还没把库上传到PyPI,只是本地测试的话,你可以把mylibrary目录放在你的项目同级目录下,或者把mylibrary所在的路径添加到Python的搜索路径里(比如用import sys; sys.path.append("/path/to/mylibrary/parent")),这样就能正常导入使用啦~

内容的提问来源于stack exchange,提问作者Bob Ronaldson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:30:04