python包中__init__.py

__init__.py的作用總體有三個。

  1. Python中package的標識,不能刪除
    原來在python模塊的每一個包中,都有一個__init__.py文件(這個文件定義了包的屬性和方法)然後是一些模塊文件和子目錄,假如子目錄中也有 __init__.py 那麼它就是這個包的子包了。當你將一個包作爲模塊導入(比如從 xml導入 dom )的時候,實際上導入了它的__init__.py 文件。
    一個包是一個帶有特殊文件 __init__.py 的目錄。__init__.py 文件定義了包的屬性和方法。其實它可以什麼也不定義;可以只是一個空文件,但是必須存在。如果__init__.py 不存在,這個目錄就僅僅是一個目錄,而不是一個包,它就不能被導入或者包含其它的模塊和嵌套包
    __init__.py 控制着包的導入行爲。假如__init__.py 爲空,那麼僅僅導入包是什麼都做不了的。
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. 定義__all__用來模糊導入
    Python中的包和模塊有兩種導入方式:精確導入和模糊導入:

精確導入:

from Root.Pack1 import Pack1Class

import Root.Pack1.Pack1Class

模糊導入:

from Root.Pack1 import *

模糊導入中的*中的模塊是由__all__來定義的,__init__.py的另外一個作用就是定義package中的__all__,用來模糊導入,如__init__.py:

__all__ = ["Pack1Class","Pack1Class1"]

在包外部調用:

from Root.Pack1 import *

a = Pack1Class.Pack1_AA("Alvin")

a.PrintName()
  1. 編寫Python代碼(不建議在__init__中寫python模塊,可以在包中在創建另外的模塊來寫,儘量保證__init__.py簡單)

參考自

  1. https://www.cnblogs.com/ubuntu1987/p/11855618.html 暱稱: Ubuntu1804
  2. https://www.cnblogs.com/AlwinXu/p/5598543.html 暱稱: Alvin_Xu
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章