tft每日頭條

 > 科技

 > python面向對象編程的四大支柱

python面向對象編程的四大支柱

科技 更新时间:2024-10-13 21:38:00

Python語言規範定義了很多 的所謂基礎協議,這些協議大都有内置實現,編程時我們可以不必太關注,但認識理解一下還是很有益處的,可以更有助于理解Python程序的底層邏輯。

python面向對象編程的四大支柱(核心協議知多少之對象協議與查看)1

前言

作為動态型解釋性高級編程語言的Python,其程序的執行時依賴解釋器的。解釋器就好比現在的翻譯軟件,負責把你編寫的程序代碼翻譯給機器所能理解的指令并執行。你所編寫的代碼必須隐式或顯式地遵循特定“翻譯軟件”的基本體系規範,否則就是雞鴨對話了——而Python中這些基本的體系規範,用術語表示就是“協議”(Protocol,或者簡單理解為接口規則或内置方法)就是這些基礎協議支撐起了Python的生态世界。

Python語言規範中基本協議類型很多,這些協議的實現往往都是C語言實現的,我們不需要查看源碼,但認識這些協議後,你将對程序的底層邏輯更清晰。

Python中的基本協議有對象協議、數字協議、比較協議、轉換協議、容器協議、疊代協議、屬性協議、函數協議、上下文管理協議等等。本文主要介紹對象協議:

對象協議

對象(Object)是Python中所有類(Class)的基類,下表中為基本的對象協議(方法),始于與對象的整體管理有關,用以實現對象的創建、初始化、銷毀和表示。

  1. __new__(cls[*args, **kwargs]):靜态方法,調用以創建新實例;
  2. __init__(self[*args, **kwargs]):對象創建後調用以進行初始化;
  3. __del__(self):銷毀對象是調用;
  4. __repr__(self):創建對象的一個字符串表示。

下面分别概要介紹一下:

協議方法__new__()和__init__()通常是一起使用來創建和初始化實例。當通過調用SomeClass(args)創建對象時,它将被轉換為以下步驟:

x = SomeClass.__new__(SomeClass, args)

if isinstance(x, SomeClass):

x.__init__(args)

通常,這些步驟是在幕後處理的,不必太擔心。在類中實現的最常見方法是__init__()。使用__new__()時幾乎總是表明存在與實例創建相關的高級魔法(例如,在想要繞過__init__()的類方法中使用,或在某些創建設計模式中使用,如定義單例或緩存)。__new__()的實現不一定需要返回相關類的實例——如果不是,則後續調用在創建時跳過__init__()。

__del__()方法在實例即将被垃圾收集時被調用。此方法僅在實例不再使用時調用。需要注意的是,del x語句隻會減少實例引用計數,并不一定會導緻調用此函數(__del__())。除非實例需要在銷毀時執行額外的資源管理步驟,否則幾乎從不定義__del__()。

由内置的repr()函數調用的__repr__()方法創建對象的字符串表示形式,這對調試和結果輸出很有用。

這個方法還負責創建在交互解釋器中檢查變量時看到的值的輸出。約定是讓__repr__()返回一個表達式字符串,可以用eval()對其求值以重新創建對象。例如:

>>> a = [2, 3, 4, 5] # 創建列表哦

>>> s = repr(a) #s='[2, 3, 4, 5]'

>>> b = eval(s)

>>> b

[2, 3, 4, 5]

如果不能創建簡單的字符串表達式,則約定由__repr__()返回該形式的字符串

<...message...>,如下所示:

>>> f =open('D:\\tmp\\testx.txt')

>>> a = repr(f)

>>> a

"<_io.TextIOWrapper name='D:\\\\tmp\\\\testx.txt' mode='r' encoding='cp936'>"

>>>

更多對象協議

要想查看多想更多的其它“協議方法”,你可以在IDLE shell下輸入如下内容看看:

>>> dir(object)# 回車後顯示内容如下:

python面向對象編程的四大支柱(核心協議知多少之對象協議與查看)2

對象object内置的協議(方法)

dir是Python内置的一個函數,可以快捷的查看相關方法或類的說明描述。對象夠的其它方法這裡就不一一解釋了。可以在shell下輸入如下形式的函數來查看相應的方法描述:

help(object.__xxx__)# xxx就是上述引号的内容。

最後

本篇就介紹這些了。下次内容接續介紹Python相關内置的規範——其它的協議方法。

點個贊,分享出去吧。謝謝,下次再見~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved