• Python的包package的导入与被导入(包的类和方法的导入,__init__()怎么写)


    包package的导入与被导入:

    参考一下:

    https://blog.csdn.net/guowujun321/article/details/80764468

    1.文件目录:

    |

    |--  A/

    | | __init__.py

    | |A1.py

    |

    | B/

    | |__init__.py

    | |B1.py

    |

    | 测试A.py

    问题1:在平行目录下的 测试A.py 想要导入A包时,需要在 测试A.py 中写:

    from A import *
    然后可以直接调用A包中的方法或者类(不需要写包名)
    或者
    import A
    A.ac()
    a1=A.A_Class("asd")

    问题2:A包的__init__文件应该怎样写,例如要导如A1.py文件中的Class:

    import os,sys
    Path=os.path.dirname(os.path.abspath(__file__))
    sys.path.append(Path)
    from A1 import *  #这一句是不可以用import A1这条语句的,因为在别的地方导入该A包的时候,会出错。(会出现未知命名错误),
    至于前面的三行代码是为了把A1所在目录导入path中,,让系统可以找到。

    问题3:当B包中的B1.py文件需要导入A包时,该怎么导入:

    import os,sys
    Path=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    print(Path)
    sys.path.append(Path)
    from A import *
    a1=A_Class("张三")
    我创建的A包中有一个类A_Class.当需要导入A包时,需要把A包的父目录添加到path中让系统可以找到。

    ①采用from...import方式

    from 包绝对路径 from 模块py文件

    from package.subpackage1 import foo1

    from 模块 import 变量

    from 包 import 子包

    ②采用import方式

    import package.subpackage1

    import 模块

    总结:import和from 2个关键字后面 都可以是模块或者包

    本测试代码链接:https://github.com/Anxc520/test1.git

  • 相关阅读:
    51nod 1117 聪明的木匠:哈夫曼树
    51nod 1010 只包含因子2 3 5的数
    51nod 2636 卡车加油
    51nod 2989 组合数
    51nod 2652 阶乘0的数量 V2
    51nod 1103 N的倍数
    51nod 2489 小b和灯泡
    51nod 1003 阶乘后面0的数量
    51nod 2122 分解质因数
    javascript中的setter和getter
  • 原文地址:https://www.cnblogs.com/Anxc/p/10881856.html
Copyright © 2020-2023  润新知