Python包中 __init__.py 文件的作用

__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。

通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。

我们在导入一个包时,实际上是执行它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

# package
# __init__.py
import re
import urllib
import sys
import os

# a.py
import package 
print(package.re, package.urllib, package.sys, package.os)

注意这里访问__init__.py文件中的引用文件,需要加上包名。

__init__.py中还有一个重要的变量,__all__, 它用来将模块全部导入。

# __init__.py
__all__ = ['os', 'sys', 're', 'urllib']

# a.py
from package import *

这时就会把注册在__init__.py文件中__all__列表中的模块和包导入到当前文件中来。

如果没有__all__的话,是没法用from pacakge import * 这种写法的。因为这种写法其实做的是将__init__.py文件中定义的__all__变量的包导入进来,并不是绝对的该目录下的都导入,是由__all__定义的

__init__文件同样也是一个python文件,在里面也可以写python类或函数,但是不建议这么写,尽量保证__init__.py足够轻

#__init__.py

__all__ = ["Pack1Class","Pack1Class1","Init_AA"]

class Init_AA:
    def __init__(self,name):
        self.name = name

    def Greeting(self):
        print("Hello ",self.name)

在测试中调用

from Root.Pack1 import *

b = Init_AA("test")

b.Greeting()

你可能感兴趣的:(Python,__all__.py)