ink_Ocelot 发表于 2021-6-28 10:45:24

有关Python导入自写模块问题

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

+ A
    |- __init__.py
    |- classA.py

然后在 classA.py 里有一个类叫做 classA
假若我在根目录里有一个 main.py
我在 main.py 里导入 A 模块是用 import A
但是假如我要用 classA 类就需要写 A.classA.classA
怎样才能达到当我使用 A.classA 时就能够调用 classA类 而不是 classA.py ?

suchocolate 发表于 2021-6-28 10:52:52

本帖最后由 suchocolate 于 2021-6-28 10:54 编辑

from A import classA as A
or
import A.classA as A

ink_Ocelot 发表于 2021-6-28 11:01:51

suchocolate 发表于 2021-6-28 10:52
or

不是取别名,就是假若A中有多个.py文件,每个文件都有各自的类
能否做到导入A然后所有的类都在A的下面
假若A中有cA.py和cB.py,各自有类classA和classB
能否导入A时以A.classA或A.classB的方式调用这两个类

qq1151985918 发表于 2021-6-28 14:49:40

写个 __init__.py
然后加个 __all__

阿奇_o 发表于 2021-6-28 19:50:28

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

应该可以。自己动手试一下就知道了。。

hrpzcf 发表于 2021-6-28 20:03:52

本帖最后由 hrpzcf 于 2021-6-28 20:07 编辑

在你的__init__.py中写:
from .classA import classA
__all__ = ["classA"] # 有这句,在别的文件中就可以实现from A import * 从而使用classA类,不过没有__all__也无所谓,别的文件中可以这样写from A import classA从而使用classA
前提是:别的文件要与文件夹A同级,否则就要注意导入路径(两三句说不清楚,就不说了)

ink_Ocelot 发表于 2021-6-28 20:44:39

hrpzcf 发表于 2021-6-28 20:03
在你的__init__.py中写:

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

这个是在模块初始化时将同目录模块导入包,然后实现在该包的空间调用该模块吗?
就比如在A包中导入同级cA.py的类classA,所以就可以实现导入A包时同时在该空间导入类classA
最后再使用A.classA使用同目录内的类classA?
不过假若在另一个目录的脚本导入该包,那么导入的起始点应该和脚本一致,那么不会导致包导入错误吗?
页: [1]
查看完整版本: 有关Python导入自写模块问题