Pycharm中_init_.py文件的作用 Pycharm中_init_.py文件的作用

Pycharm中_init_.py文件的作用

             <div id="article_content" class="article_content clearfix">
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-211130ba7a.css">
                        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-211130ba7a.css">
            <div class="htmledit_views" id="content_views">

以下文章來自於:http://blog.csdn.net/monkey_d_feilong/article/details/52150224


在創建python包的過程中,IDE都會在包根目錄下創建一個__init__.py文件,該Python文件默認是空的.目錄結構如下:

Pycharm下的package樹結構:

在Finder中的目錄結構:

從Finder中的目錄就可以看出來,每個package實際上是一個目錄(Directory),那麼IDE是怎麼識別它爲package呢?沒錯,__init__.py的第一個作用就是package的標識,如果沒有該文件,該目錄就不會認爲是package。

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()

__init__.py首先是一個python文件,所有還可以用來寫python模塊,但是不建議這麼寫,儘量保證__init__.py足夠輕:

__init__.py:

複製代碼
__all__ = ["Pack1Class","Pack1Class1","Init_AA"]

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

</span><span style="color:rgb(0,0,255);">def</span><span style="color:rgb(0,0,0);"> Greeting(self):
    </span><span style="color:rgb(0,0,255);">print</span>(<span style="color:rgb(128,0,0);">"</span><span style="color:rgb(128,0,0);">Hello </span><span style="color:rgb(128,0,0);">"</span>,self.name)</pre>
複製代碼

在測試中調用:

from Root.Pack1 import *

b = Init_AA(test)

b.Greeting()

 

總結:

從上邊的例子可以看出,__init__.py的主要作用是:

1. Python中package的標識,不能刪除

2. 定義__all__用來模糊導入

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

        <div class="person-messagebox">
            <div class="left-message"><a href="https://blog.csdn.net/glodon_mr_chen">
                <img src="https://profile.csdnimg.cn/0/3/4/3_glodon_mr_chen" class="avatar_pic" username="glodon_mr_chen">
            </a></div>
            <div class="middle-message">
                                    <div class="title"><span class="tit "><a href="https://blog.csdn.net/glodon_mr_chen" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}" target="_blank">Gavin姓陳</a></span>
                    <!-- 等級,level -->
                    <img class="identity-icon" src="https://csdnimg.cn/identity/vip.png">                        <img class="identity-icon" src="https://csdnimg.cn/identity/blog5.png">                                            </div>
                <div class="text"><span>原創文章 44</span><span>獲贊 167</span><span>訪問量 43萬+</span></div>
            </div>
                            <div class="right-message">
                                        <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}">關注</a>
                                                            <a href="https://im.csdn.net/im/main.html?userName=glodon_mr_chen" target="_blank" class="btn btn-sm bt-button personal-letter">私信
                    </a>
                                </div>
                        </div>
                    
    </div>
</article>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章