国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了Python學(xué)習(xí)筆記(二十)————面向?qū)ο?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

(1)面向?qū)ο蟮暮锰?/h4>

在日常中,記錄數(shù)據(jù)時(shí)往往使用統(tǒng)一的表格,這樣就不會使得數(shù)據(jù)信息格式混亂,同樣在程序中的數(shù)據(jù)組織中,僅僅通過變量來記錄會顯得混亂不統(tǒng)一。

在程序中是可以做到和生活中那樣,設(shè)計(jì)表格、生產(chǎn)表格、填寫表格的組織形式的。

1. 在程序中設(shè)計(jì)表格,我們稱之為:設(shè)計(jì)類(class

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

2. 在程序中打印生產(chǎn)表格,我們稱之為:創(chuàng)建對象

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

3. 在程序中填寫表格,我們稱之為:對象屬性賦值

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

(2)類的定義和使用

創(chuàng)建類的語法:

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

class 是關(guān)鍵字,表示要定義類了
類的屬性,即定義在類中的變量(成員變量)

? ? ? ?類的行為,即定義在類中的函數(shù)(成員方法)?

?創(chuàng)建類對象的語法:

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?(3)成員變量和成員方法

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

可以看出,類中:

? 不僅可以定義屬性用來記錄數(shù)據(jù)
? 也可以定義函數(shù),用來記錄行為

其中:

? 類中定義的屬性(變量),我們稱之為: 成員變量
? 類中定義的行為(函數(shù)),我們稱之為: 成員方法

(4)?成員方法的定義語法

在類中定義成員方法和定義函數(shù)基本一致,但仍有細(xì)微區(qū)別:

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

可以看到,在方法定義的參數(shù)列表中,有一個(gè):self關(guān)鍵字

self關(guān)鍵字是成員方法定義的時(shí)候,必須填寫的。

? 它用來表示類對象自身的意思
? 當(dāng)我們使用類對象調(diào)用方法的是, self 會自動被 python 傳入
? 在方法內(nèi)部,想要訪問類的成員變量,必須使用 self
Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

self關(guān)鍵字,盡管在參數(shù)列表中,但是傳參的時(shí)候可以忽略它。

如:

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?可以看到,在傳入?yún)?shù)的時(shí)候,self是透明的,可以不用理會它

(5)?構(gòu)造方法

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

上述代碼中,為對象的屬性賦值需要依次進(jìn)行,略顯繁瑣。有沒有更加高效的方式,能夠一行代碼就完成呢?可以,需要使用構(gòu)造方法:__init__()

Python類可以使用:__init__()方法,稱之為構(gòu)造方法。

可以實(shí)現(xiàn):

? 在創(chuàng)建類對象(構(gòu)造類)的時(shí)候, 會自動執(zhí)行。
? 在創(chuàng)建類對象(構(gòu)造類)的時(shí)候, 將傳入?yún)?shù)自動傳遞給 __ init __ 方法使用。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?注意:

? 構(gòu)造方法名稱: ? __ init __ , 千萬不要忘記 init 前后都有 2 個(gè)下劃線
? 構(gòu)造方法也是成員方法,不要忘記在參數(shù)列表中提供: self
? 在構(gòu)造方法內(nèi)定義成員變量,需要 使用 self 關(guān)鍵字

(6)幾種常用的類內(nèi)置方法(魔術(shù)方法)

上文的__init__ 構(gòu)造方法,是Python類內(nèi)置的方法之一。

這些內(nèi)置的類方法,各自有各自特殊的功能,這些內(nèi)置方法我們稱之為:魔術(shù)方法

魔術(shù)方法很多,這里介紹幾個(gè)常見的

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

__str__ 字符串方法

?方法名:__str__?????????返回值:字符串?????????內(nèi)容:自行定義

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

當(dāng)類對象需要被轉(zhuǎn)換為字符串之時(shí),會輸出如上結(jié)果(內(nèi)存地址)

內(nèi)存地址沒有多大作用,我們可以通過__str__方法,控制類轉(zhuǎn)換為字符串的行為。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

__lt__ 小于符號比較方法

??傳入?yún)?shù):other,另一個(gè)類對象?????????返回值:True 或 False?????????內(nèi)容:自行定義

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

__lt__方法,即可同時(shí)完成:小于符號 和 大于符號 2種比較

?比較大于符號的魔術(shù)方法是:__gt__,不過,實(shí)現(xiàn)了__lt__,__gt__就沒必要實(shí)現(xiàn)了

__le__ 小于等于比較符號方法

?傳入?yún)?shù):other,另一個(gè)類對象?????????返回值:True False????????內(nèi)容:自行定義

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?__le__可用于:<=、>=兩種比較運(yùn)算符上。

>=符號實(shí)現(xiàn)的魔術(shù)方法是:__ge__,不過,實(shí)現(xiàn)了__le__,__ge__就沒必要實(shí)現(xiàn)了

__eq__?比較運(yùn)算符實(shí)現(xiàn)方法

?傳入?yún)?shù):other,另一個(gè)類對象?????????返回值:True 或 False?????????內(nèi)容:自行定義

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

不實(shí)現(xiàn)__eq__方法,對象之間可以比較,但是是比較內(nèi)存地址,也即是:不同對象==比較一定是False結(jié)果。

實(shí)現(xiàn)了__eq__方法,就可以按照自己的想法來決定2個(gè)對象是否相等了

?(7)面向?qū)ο蟮娜筇匦?/h4>

面向?qū)ο缶幊?,是許多編程語言都支持的一種編程思想。

簡單理解是:基于模板(類)去創(chuàng)建實(shí)體(對象),使用對象完成功能開發(fā)。

面向?qū)ο蟀?/span>3大主要特性:

? 封裝
? 繼承
? 多態(tài)

(8)封裝

封裝表示的是,將現(xiàn)實(shí)世界事物的:屬性和行為,封裝到類中,描述為:成員變量和成員方法,從而完成程序?qū)ΜF(xiàn)實(shí)世界事物的描述。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

現(xiàn)實(shí)世界中的事物,有屬性和行為。但是不代表這些屬性和行為都是開放給用戶使用的。

既然現(xiàn)實(shí)事物有不公開的屬性和行為,那么作為現(xiàn)實(shí)事物在程序中映射的類,也應(yīng)該支持。

類中提供了私有成員的形式來支持。

? 私有成員變量
? 私有成員方法

定義私有成員的方式非常簡單,只需要:

? 私有成員變量:變量名以 __ 開頭( 2 個(gè)下劃線)
? 私有成員方法:方法名以 __ 開頭( 2 個(gè)下劃線)

即可完成私有成員的設(shè)置

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

私有方法無法直接被類對象使用????????

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言??????????????

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

私有變量無法賦值,也無法獲取值

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

私有成員無法被類對象使用,但是可以被其它的成員使用。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?(9)繼承

①單繼承

若不使用繼承,我們想創(chuàng)造一個(gè)新的類時(shí),需要重新定義變量和方法,比較繁瑣,如下

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

而使用繼承之后可使代碼變得簡潔

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

使用如下圖語法,可以完成類的單繼承。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

繼承表示:將從父類那里繼承(復(fù)制)來成員變量和成員方法(不含私有)

?②多繼承

Python的類之間也支持多繼承,即一個(gè)類,可以繼承多個(gè)父類

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?多繼承注意事項(xiàng)

多個(gè)父類中,如果有同名的成員,那么默認(rèn)以繼承順序(從左到右)為優(yōu)先級。

即:先繼承的保留,后繼承的被覆蓋

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

③pass關(guān)鍵字

pass是占位語句,用來保證函數(shù)(方法)或類定義的完整性,表示無內(nèi)容,空的意思

④復(fù)寫

子類繼承父類的成員屬性和成員方法后,如果對其不滿意,那么可以進(jìn)行復(fù)寫。

即:在子類中重新定義同名的屬性或方法即可。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

一旦復(fù)寫父類成員,那么類對象調(diào)用成員的時(shí)候,就會調(diào)用復(fù)寫后的新成員

如果需要使用被復(fù)寫的父類的成員,需要特殊的調(diào)用方式:

方式1
? 調(diào)用父類成員

???? 使用成員變量:父類名.成員變量

???? 使用成員方法:父類名.成員方法(self)

方式2
? 使用 super() 調(diào)用父類成員

???? 使用成員變量:super().成員變量

???? 使用成員方法:super().成員方法()

只可以在子類內(nèi)部調(diào)用父類的同名成員,子類的實(shí)體類對象調(diào)用默認(rèn)是調(diào)用子類復(fù)寫的

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

(10)類型注解

Python在3.5版本的時(shí)候引入了類型注解,以方便靜態(tài)類型檢查工具,IDE等第三方工具。

類型注解:在代碼中涉及數(shù)據(jù)交互的地方,提供數(shù)據(jù)類型的注解(顯式的說明)。

主要功能:

? 幫助第三方 IDE 工具(如 PyCharm )對代碼進(jìn)行類型推斷,協(xié)助做代碼提示
? 幫助開發(fā)者自身對變量進(jìn)行類型注釋

支持:

? 變量的類型注解
? 函數(shù)(方法)形參列表和返回值的類型注解
為變量設(shè)置類型注解
方法一:

基礎(chǔ)語法:? 變量: 類型

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言? ? ?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

注意:

? 元組類型設(shè)置類型詳細(xì)注解,需要將每一個(gè)元素都標(biāo)記出來
? 字典類型設(shè)置類型詳細(xì)注解,需要 2 個(gè)類型,第一個(gè)是 key 第二個(gè)是 value
?方法二:

除了使用 變量: 類型, 這種語法做注解外,也可以在注釋中進(jìn)行類型注解。

語法:? ?# type: 類型

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

一般,無法直接看出變量類型之時(shí),會添加變量的類型注解

類型注解的限制

類型注解主要功能在于:

? 幫助第三方 IDE 工具(如 PyCharm )對代碼進(jìn)行類型推斷,協(xié)助做代碼提示
? 幫助開發(fā)者自身對變量進(jìn)行類型注釋(備注)

并不會真正的對類型做驗(yàn)證和判斷。

也就是,類型注解僅僅是提示性的,不是決定性的

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言?

如圖代碼,是不會報(bào)錯的。

②?函數(shù)(方法)的類型注解
【1】形參注解

如圖所示:

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

? 在編寫函數(shù)(方法),使用形參 data 的時(shí)候,工具沒有任何提示
? 在調(diào)用函數(shù)(方法),傳入?yún)?shù)的時(shí)候,工具無法提示參數(shù)類型

這些都是因?yàn)椋覀冊诙x函數(shù)(方法)的時(shí)候,沒有給形參進(jìn)行注解

函數(shù)和方法的形參類型注解語法:

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

【2】返回值注解

同時(shí),函數(shù)(方法)的返回值也是可以添加類型注解的。

語法如下:注意,返回值類型注解的符號使用: ->

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?③Union類型

使用Union[類型, ......, 類型],可以定義聯(lián)合類型注解

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?Union聯(lián)合類型注解,在變量注解、函數(shù)(方法)形參和返回值注解中,均可使用。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

(11)多態(tài)

多態(tài),指的是:多種狀態(tài),即完成某個(gè)行為時(shí),使用不同的對象會得到不同的狀態(tài)。

同樣的行為(函數(shù)),傳入不同的對象,得到不同的狀態(tài)

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?抽象類(接口)

包含抽象方法的類,稱之為抽象類。抽象方法是指:沒有具體實(shí)現(xiàn)的方法(pass)稱之為抽象方法

多用于做頂層設(shè)計(jì)(設(shè)計(jì)標(biāo)準(zhǔn)),以便子類做具體實(shí)現(xiàn)。

也是對子類的一種軟性約束,要求子類必須復(fù)寫(實(shí)現(xiàn))父類的一些方法

并配合多態(tài)使用,獲得不同的工作狀態(tài)。

Python學(xué)習(xí)筆記(二十)————面向?qū)ο?學(xué)習(xí),筆記,python,開發(fā)語言

?文章來源地址http://www.zghlxwxcb.cn/news/detail-539692.html

?

到了這里,關(guān)于Python學(xué)習(xí)筆記(二十)————面向?qū)ο蟮奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包