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__創建對象的方法。