国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

Python OOP 設(shè)計思想 01:存在即對象

0
分享至

在 Python 語言中,“對象”(object)并不是面向?qū)ο缶幊烫赜械某橄蟾拍?,而是程序運(yùn)行時的基本事實(shí)。只要一個實(shí)體存在于 Python 的運(yùn)行時環(huán)境中,無論它是數(shù)字、字符串、函數(shù)、類還是模塊,它都是一個對象。這種設(shè)計并非語法層面的裝飾,而是 Python 的哲學(xué)基礎(chǔ)。正是這一統(tǒng)一而徹底的對象模型,深刻塑造了 Python 的語言特性、編程范式以及其對接口、多態(tài)與動態(tài)行為的支持方式。

1.1 從“一切皆對象”談起

“一切皆對象”常被視為 Python 的入門口號。

但真正需要理解的,并不是這句話本身,而是它背后所揭示的運(yùn)行時事實(shí):在 Python 中,對象不是概念假設(shè),而是程序世界中真實(shí)存在的基本單位。

考慮以下幾個簡單的例子:

    pass

在 Python 運(yùn)行時,上述所有實(shí)體都是對象:

? 42 是整數(shù)對象

? "hello" 是字符串對象

? f 是函數(shù)對象

? C 是類對象

這些對象具備一組統(tǒng)一的能力:

? 可以被名稱引用(名稱綁定),俗稱“賦值給變量”

? 可以作為參數(shù)傳遞

? 可以被放入容器(如列表、字典等)

? 可以在運(yùn)行時被檢查、修改或替換

這并不是“語法糖”或?qū)崿F(xiàn)巧合,而是 Python 所采用的統(tǒng)一對象模型:

凡是可以被引用、傳遞和操作的存在,都是對象。

因此,“一切皆對象”并非哲學(xué)宣言,而是 Python 對其運(yùn)行時行為所作出的基本承諾。

1.2 對象先于類型而存在

在許多靜態(tài)類型語言中,對象的出現(xiàn)遵循如下順序:

1、先聲明類型

2、再根據(jù)類型創(chuàng)建實(shí)例

3、對象作為類型的附屬物存在

Python 采取了截然不同的設(shè)計立場。

考慮這行簡單代碼。

x = 10

在運(yùn)行時,真實(shí)發(fā)生的順序是:

1、創(chuàng)建一個整數(shù)對象 10

2、將名稱 x 綁定到該對象

只有在對象已經(jīng)存在之后,我們才能查詢它的類型:

type(x)    #

更進(jìn)一步,類型本身也是對象:

type(type)    #

這揭示了 Python 的根本立場:類型用于描述已存在的對象,而不是對象存在的前提條件。

對象并非因類型而存在,類型只是對象的一種可被查詢的屬性特征。

1.3 對象不等于實(shí)例

在傳統(tǒng)教學(xué)和交流中,我們常說“創(chuàng)建一個類的實(shí)例”。但在 Python 語言層面,“實(shí)例”(Instance)并不是一個獨(dú)立的語義實(shí)體,它只是對象的一種角色稱謂。

u = User()

在這里,User 是對象(類對象),u 也是對象(通常稱為實(shí)例對象)。

“實(shí)例”這一說法,只是用于區(qū)分對象的創(chuàng)建者與被創(chuàng)建者,而非語言層面的分類。它們在運(yùn)行時本質(zhì)上共享相同的對象模型。

理解這一點(diǎn),對于掌握 Python 的面向?qū)ο笤O(shè)計尤為關(guān)鍵:

? “類”并不特殊,它們只是可以創(chuàng)建其他對象的對象

? “方法”并非附著在類上的特殊語法,而是通過描述符協(xié)議參與屬性訪問

? 對象的存在與可使用性,并不依賴于其是否來自某個用戶定義的類

1.4 類、實(shí)例與對象的關(guān)系重構(gòu)

傳統(tǒng)面向?qū)ο蠼虒W(xué)中,常見的關(guān)系模型是:

類 → 創(chuàng)建 → 實(shí)例 → 調(diào)用方法

而在 Python 中,更貼近真實(shí)語義的模型是:

對象 ← 被創(chuàng)建 / 被返回 / 被傳遞

類在 Python 中的真實(shí)角色是:既是對象本身,又是生產(chǎn)對象的“工廠”。

# User.__call__ → User.__new__ → User.__init__

當(dāng)類被調(diào)用時,解釋器并不是“生成實(shí)例”,而是執(zhí)行一次調(diào)用流程并返回一個新對象。

關(guān)鍵洞察在于:對象是否來自某個類,并不是它能否被使用的前提條件。

只要對象支持特定的使用方式,它就可以參與程序運(yùn)行。這正是接口、協(xié)議與多態(tài)得以成立的基礎(chǔ)。

1.5 對象的能力來源:屬性訪問機(jī)制

既然對象是 Python 的基本存在單元,隨之而來的問題是:對象是通過什么機(jī)制參與計算的?從語言實(shí)現(xiàn)層面看,答案是統(tǒng)一而明確的:

通過屬性訪問與屬性查找機(jī)制。

對象的“能力”并非抽象地附著在類型之上,而是具體體現(xiàn)在它是否暴露了某些可被查找的屬性(Attribute)。

obj()           # 僅當(dāng) obj 具有 __call__ 屬性時才成立

需要特別指出的是,“方法”(Method)并不是獨(dú)立概念,而是屬性的一種特殊形式。

(1)統(tǒng)一機(jī)制:屬性查找而非類型判斷

屬性訪問的本質(zhì)并不是 . 操作符,而是解釋器對屬性名的查找過程。

obj.y          # AttributeError:查找路徑中不存在 y

在這一過程中,解釋器并不會先判斷 obj 是否是 A 的實(shí)例,而是沿既定查找路徑尋找名為 x 或 y 的屬性。

能否訪問成功,僅取決于屬性是否存在于查找鏈上,而非對象被標(biāo)注為何種類型。

(2)能力差異:由協(xié)議方法的存在性決定

對象之間的能力差異,體現(xiàn)為其是否提供特定的協(xié)議方法:

? 具有 __call__ 方法的對象可以被調(diào)用(如函數(shù)、類)

? 具有 __iter__ 方法的對象可參與迭代協(xié)議,還提供了 __next__ 方法的對象可作為迭代器來推進(jìn)迭代

? 具有 __add__ 方法的對象可以參與加法運(yùn)算

? 具有 __getitem__ 方法的對象可以支持索引訪問

num()             # TypeError:整數(shù)對象不可調(diào)用

調(diào)用是否成立,并不取決于對象為何種“類型”,而是取決于對象是否實(shí)際提供了 __call__ 這一屬性。

(3)能力可變性的邊界

“能力由屬性決定”并不意味著所有對象的能力都可在運(yùn)行時被自由修改。

b.value = 42        # 合法:實(shí)例支持動態(tài)屬性綁定

而內(nèi)置不可變對象則不同:

num.x = 1           # AttributeError:int 對象不支持實(shí)例屬性綁定

這表明:

? 能力是否可擴(kuò)展,取決于對象的具體實(shí)現(xiàn)

? Python 并未承諾所有對象都可變,只承諾能力通過屬性表達(dá)

(4)以屬性為中心的對象語義

當(dāng)我們從“使用方式”而非“類型歸屬”出發(fā),對象之間的關(guān)系會自然重構(gòu)。

process(SocketLike())

在這里,F(xiàn)ileLike 與 SocketLike 沒有繼承關(guān)系,它們來自完全不同的設(shè)計語境,唯一的共性是:都提供了 .read() 屬性,但這已經(jīng)足夠使它們在 process 函數(shù)中共享同一使用接口。

這并非隨意調(diào)用,而是 Python 以屬性存在性定義接口承諾的自然結(jié)果。

1.6 對象的意義在于使用

如果要用一句話概括 Python 的對象觀,那就是:

對象的意義不在于它是什么,而在于它如何被使用。

在 Python 編程實(shí)踐中,我們很少關(guān)心對象來自哪個具體的類、它的繼承層次有多深。真正重要的是:

? 能否通過特定方式訪問它

? 它是否按預(yù)期響應(yīng)調(diào)用

    return data.read()

在這里,data 的具體類型不重要,是否繼承自哪個基類也不重要,唯一重要的是:它是否提供了 .read() 方法。

對象正是在使用中被賦予意義的,這正是“鴨子類型”(Duck Typing)思想的語言基礎(chǔ)。

小結(jié)

Python 并非先以類型約束世界,而是先承認(rèn)對象的存在,再通過屬性與使用方式賦予其意義。對象的能力由其可被查找的屬性所表達(dá),接口與多態(tài)并非預(yù)先聲明,而是在使用中自然顯現(xiàn)。類型系統(tǒng)服務(wù)于對象的理解與演化,而非決定對象的存在。


點(diǎn)贊有美意,贊賞是鼓勵

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
CBA焦點(diǎn)戰(zhàn)今夜打響!12日19點(diǎn)30分,CCTV5直播表,四川拒14連敗

CBA焦點(diǎn)戰(zhàn)今夜打響!12日19點(diǎn)30分,CCTV5直播表,四川拒14連敗

老吳說體育
2026-01-12 11:11:50
曝閆學(xué)晶兒子高考造假!大V列出3宗罪,教育局介入,果然還有猛料

曝閆學(xué)晶兒子高考造假!大V列出3宗罪,教育局介入,果然還有猛料

鯨探所長
2026-01-11 19:41:12
加時一分險勝,守住東部第四!巴恩斯31+6+7,馬克西空砍38+4+5

加時一分險勝,守住東部第四!巴恩斯31+6+7,馬克西空砍38+4+5

無術(shù)不學(xué)
2026-01-12 10:41:09
維尼修斯手握兩家豪門邀約,與其留下不如換隊重啟

維尼修斯手握兩家豪門邀約,與其留下不如換隊重啟

K唐伯虎
2026-01-11 08:51:06
事實(shí)證明,多讀書就是有用!
你看看26歲女交警的采訪就知道了。

事實(shí)證明,多讀書就是有用! 你看看26歲女交警的采訪就知道了。

忠于法紀(jì)
2026-01-05 21:28:48
A股午評:滬指半日漲0.75%,深證成指漲1.31%,AI語料、豆包大模型,文化傳媒等概念走強(qiáng)

A股午評:滬指半日漲0.75%,深證成指漲1.31%,AI語料、豆包大模型,文化傳媒等概念走強(qiáng)

界面新聞
2026-01-12 11:34:41
為什么美國抓走馬杜羅后,委內(nèi)瑞拉的股市反而暴漲50%

為什么美國抓走馬杜羅后,委內(nèi)瑞拉的股市反而暴漲50%

總在茶余后
2026-01-12 05:43:01
俄駐華大使館高調(diào)慶祝《北京條約》奪取外東北(海參崴)160周年

俄駐華大使館高調(diào)慶祝《北京條約》奪取外東北(海參崴)160周年

律法刑道
2025-12-30 08:34:47
最討厭的演員排名,潘長江僅第五,閆學(xué)晶第二,第一毋庸置疑

最討厭的演員排名,潘長江僅第五,閆學(xué)晶第二,第一毋庸置疑

林雁飛
2026-01-04 19:29:51
宇宙真的有輪回嗎?龐加萊回歸證明,一切都會重演無數(shù)次

宇宙真的有輪回嗎?龐加萊回歸證明,一切都會重演無數(shù)次

觀察宇宙
2026-01-07 21:32:45
30歲男子哀牢山獨(dú)行失蹤,家屬拒絕配合搜救,找到時救援隊懵了

30歲男子哀牢山獨(dú)行失蹤,家屬拒絕配合搜救,找到時救援隊懵了

罪案洞察者
2025-10-22 10:16:41
一位獨(dú)居老人傾訴:好心讓失業(yè)的親戚來做保姆,結(jié)果卻害苦了自己

一位獨(dú)居老人傾訴:好心讓失業(yè)的親戚來做保姆,結(jié)果卻害苦了自己

人間百態(tài)大全
2026-01-04 06:40:03
肥腸再次成為關(guān)注對象!研究發(fā)現(xiàn):常吃肥腸,身體會收獲3大好處

肥腸再次成為關(guān)注對象!研究發(fā)現(xiàn):常吃肥腸,身體會收獲3大好處

全球軍事記
2025-12-29 21:28:37
曼聯(lián)水貨該隨阿莫林滾蛋!足總杯慘敗布萊頓,他的表現(xiàn)堪稱恥辱

曼聯(lián)水貨該隨阿莫林滾蛋!足總杯慘敗布萊頓,他的表現(xiàn)堪稱恥辱

瀾歸序
2026-01-12 03:15:30
家族聚會,姑媽把我趕走,姑父領(lǐng)導(dǎo)看見我后,走到我面前向我問好

家族聚會,姑媽把我趕走,姑父領(lǐng)導(dǎo)看見我后,走到我面前向我問好

紅豆講堂
2025-11-23 09:30:09
合川千人殺豬后續(xù):呆呆"闖大禍"了 人走之后深夜哭泣 后悔發(fā)文了

合川千人殺豬后續(xù):呆呆"闖大禍"了 人走之后深夜哭泣 后悔發(fā)文了

鋭娛之樂
2026-01-12 08:25:42
生死戰(zhàn),同時開球!等差數(shù)列格局,U23國足爭第1,央視或2場同播

生死戰(zhàn),同時開球!等差數(shù)列格局,U23國足爭第1,央視或2場同播

實(shí)事球是
2026-01-12 08:58:50
溥儀在“偽滿”的權(quán)力有多大?別被他裝孫子的一面給騙了

溥儀在“偽滿”的權(quán)力有多大?別被他裝孫子的一面給騙了

掠影后有感
2026-01-09 11:08:09
不賣島就開戰(zhàn)?特朗普話音剛落,丹麥下放開火權(quán),6國外援已就位

不賣島就開戰(zhàn)?特朗普話音剛落,丹麥下放開火權(quán),6國外援已就位

博覽歷史
2026-01-08 19:23:13
五常已做選擇!高市送中國4個字,石破茂倒戈:日本無道歉的必要

五常已做選擇!高市送中國4個字,石破茂倒戈:日本無道歉的必要

知法而形
2026-01-12 11:21:55
2026-01-12 12:16:49
MediaTea
MediaTea
專業(yè)的數(shù)字媒體、新媒體技術(shù)
1701文章數(shù) 72關(guān)注度
往期回顧 全部

科技要聞

小米二手車價大跳水:SU7半年跌5萬元

頭條要聞

媒體:美國"不演了" 特朗普直白表態(tài)震驚世界

頭條要聞

媒體:美國"不演了" 特朗普直白表態(tài)震驚世界

體育要聞

聰明的球員,不是教練教出來的

娛樂要聞

閆學(xué)晶:脫離群眾太久 忘了自己的根

財經(jīng)要聞

揭秘“穩(wěn)賺不賠”的代工項目騙局

汽車要聞

"家轎之王"變帥了 東風(fēng)日產(chǎn)全新軒逸量產(chǎn)下線

態(tài)度原創(chuàng)

房產(chǎn)
親子
健康
游戲
教育

房產(chǎn)要聞

66萬方!4755套!三亞巨量房源正瘋狂砸出!

親子要聞

人財兩空!廣東寶媽梁海燕去世,因羊水栓塞導(dǎo)致,十天花費(fèi)超50萬

血常規(guī)3項異常,是身體警報!

《黑神話》再登國區(qū)暢銷榜前十!佳作熱度不減

教育要聞

22分鐘只能背十個單詞,高二英語50分,如何提高背單詞效率?

無障礙瀏覽 進(jìn)入關(guān)懷版