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

包package的导入与被导入:

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

猜你喜欢

转载自www.cnblogs.com/Anxc/p/10881856.html