iOS開發人員如何學習Python程式設計22-補充1

語言: CN / TW / HK

這是我參與11月更文挑戰的22天,活動詳情檢視:2021最後一次更文挑戰

程式主入口

很多時候,我們經常在python程式中看到這麼一行語句: if __name__ == '__main__' 1. __name__是所有模組都會有的一個內建屬性。 2. 一個模組的__name__值取決於你如何呼叫模組。 假如你有一個test.py檔案,如果在a.py檔案中使用import匯入這個模組import test.py,那麼test.py模組的__name__屬性的值就是test,不帶路徑或者副檔名。

其實順序執行,簡單來說就是程式碼按照從上到下的順序來執行。

魔法方法

Python中,有一些內建好的特定方法,這些方法在進行特定的操作時會自動被呼叫,稱為魔法方法。\ 魔法方法的命名總是被雙下劃線包圍: - __名稱__

常用魔法方法

1. __doc__
  • __doc__用來檢視類的說明文件: 

print(list().__doc__) - 檢視自定義類的說明文件:  ``` class Demo(object): """ 我是註釋 """ pass

d = Demo() print(d.doc) ```

2. __module__

__module__用來檢視當前操作的類所在模組。當執行模組是類所在模組時,執行結果為__main__。否則,執行結果是類所在模組的名稱。

3. __class__

__class__用來檢視當前物件的類。

4. __dict__

__dict__用於獲取類或者例項的屬性字典

⚠️注意

  • 普通欄位儲存在物件中,所以通過物件.__dict__獲取的是普通欄位
  • 除普通欄位以外的成員都儲存在類中,所以通過類.__dict__來獲取。
5. __del__()

__del__()方法也叫做析構方法。當由該類建立的例項物件,被刪除或者說在記憶體中被釋放,將會自動觸發執行。

⚠️注意

  • 當代碼全部執行完畢才自動觸發__del__()
  • 如果需要提前觸發,則需要通過del關鍵字,刪除所有物件後觸發__del__()
  • 此方法一般不需要定義,因為Python是一門高階語言,程式設計師在使用時無需關心記憶體的分配與釋放,一般都是交給Python直譯器來執行。所以,解構函式的呼叫是由直譯器在進行垃圾回收時自動觸發執行。
6. __call__()

__call__()方法用於將物件變成一個可呼叫的物件。也就是說,當一個類中有__call__()方法時,其例項化得到的物件便是可呼叫的(callable): ``` class Demo(object): pass

d = Demo() d() # TypeError: 'Demo' object is not callable class Demo(object): pass

d = Demo() d() # TypeError: 'Demo' object is not callable ```

7. __new__()

__new__()方法用於建立與返回一個物件。在類準備將自身例項化時呼叫:

``` class Demo(object): def init(self): print("init")

def __new__(cls, *args, **kwargs):
    print("__new__")

d = Demo() ```

⚠️注意

  • __new__()方法用於建立物件;
  • __init__()方法在物件建立的時候,自動呼叫;
  • 但是此處重寫了父類的__new__()方法,覆蓋了父類__new__()建立物件的功能,所以物件並沒有建立成功。所以僅執行__new__()方法內部程式碼。

物件建立執行順序

  1. 通過__new__()方法建立物件;
  2. 並將物件返回,傳給__init__()

``` class Demo(object): def init(self): print("init")

def __new__(cls, *args, **kwargs):
    print("__new__")
    return super().__new__(cls)

d = Demo() ```

⚠️注意

  • 在建立物件時,一定要將物件返回,在會自動觸發__init__()方法;
  • __init__()方法當中的self,實際上就是__new__返回的例項,也就是該物件;
  • __init__()__new__()區別;
  • __init__例項方法,__new__靜態方法;
  • __init__在物件建立後自動呼叫,__new__建立物件的方法。