有关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:54 编辑
from A import classA as A
or
import A.classA as A suchocolate 发表于 2021-6-28 10:52
or
不是取别名,就是假若A中有多个.py文件,每个文件都有各自的类
能否做到导入A然后所有的类都在A的下面
假若A中有cA.py和cB.py,各自有类classA和classB
能否导入A时以A.classA或A.classB的方式调用这两个类 写个 __init__.py
然后加个 __all__ ink_Ocelot 发表于 2021-6-28 11:01
不是取别名,就是假若A中有多个.py文件,每个文件都有各自的类
能否做到导入A然后所有的类都在A的下面
...
应该可以。自己动手试一下就知道了。。 本帖最后由 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同级,否则就要注意导入路径(两三句说不清楚,就不说了)
hrpzcf 发表于 2021-6-28 20:03
在你的__init__.py中写:
前提是:别的文件要与文件夹A同级,否则就要注意导入路径(两三句说不清楚,就 ...
这个是在模块初始化时将同目录模块导入包,然后实现在该包的空间调用该模块吗?
就比如在A包中导入同级cA.py的类classA,所以就可以实现导入A包时同时在该空间导入类classA
最后再使用A.classA使用同目录内的类classA?
不过假若在另一个目录的脚本导入该包,那么导入的起始点应该和脚本一致,那么不会导致包导入错误吗?
页:
[1]