鱼C论坛

 找回密码
 立即注册
查看: 2030|回复: 6

有关Python导入自写模块问题

[复制链接]
发表于 2021-6-28 10:45:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假设我有一个模块叫A
他的目录是这样的:

  1. + A
  2.     |- __init__.py
  3.     |- classA.py
复制代码


然后在 classA.py 里有一个类叫做 classA
假若我在根目录里有一个 main.py
我在 main.py 里导入 A 模块是用 import A
但是假如我要用 classA 类就需要写 A.classA.classA
怎样才能达到当我使用 A.classA 时就能够调用 classA类 而不是 classA.py ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-28 10:52:52 | 显示全部楼层
本帖最后由 suchocolate 于 2021-6-28 10:54 编辑
  1. from A import classA as A
复制代码

or
  1. import A.classA as A
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-28 11:01:51 | 显示全部楼层

不是取别名,就是假若A中有多个.py文件,每个文件都有各自的类
能否做到导入A然后所有的类都在A的下面
假若A中有cA.py和cB.py,各自有类classA和classB
能否导入A时以A.classA或A.classB的方式调用这两个类
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-28 14:49:40 | 显示全部楼层
写个 __init__.py
然后加个 __all__
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-28 19:50:28 | 显示全部楼层
ink_Ocelot 发表于 2021-6-28 11:01
不是取别名,就是假若A中有多个.py文件,每个文件都有各自的类
能否做到导入A然后所有的类都在A的下面
...

应该可以。自己动手试一下就知道了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-28 20:03:52 From FishC Mobile | 显示全部楼层
本帖最后由 hrpzcf 于 2021-6-28 20:07 编辑

在你的__init__.py中写:
  1. from .classA import classA
  2. __all__ = ["classA"] # 有这句,在别的文件中就可以实现from A import * 从而使用classA类,不过没有__all__也无所谓,别的文件中可以这样写from A import classA从而使用classA
复制代码

前提是:别的文件要与文件夹A同级,否则就要注意导入路径(两三句说不清楚,就不说了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-28 20:44:39 | 显示全部楼层
hrpzcf 发表于 2021-6-28 20:03
在你的__init__.py中写:

前提是:别的文件要与文件夹A同级,否则就要注意导入路径(两三句说不清楚,就 ...

这个是在模块初始化时将同目录模块导入包,然后实现在该包的空间调用该模块吗?
就比如在A包中导入同级cA.py的类classA,所以就可以实现导入A包时同时在该空间导入类classA
最后再使用A.classA使用同目录内的类classA?
不过假若在另一个目录的脚本导入该包,那么导入的起始点应该和脚本一致,那么不会导致包导入错误吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 18:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表