蜜桃精品成人影片_99热在线精品免费_日韩亚洲中字无码一区二区三区_亚洲中文字幕久久精品无码一区

您現(xiàn)在所在的位置:首頁 >學(xué)習(xí)資源 > Python全棧+人工智能入門教材 > Python基礎(chǔ)入門教程27:企業(yè)級開發(fā)基礎(chǔ) 面向?qū)ο髷U(kuò)展

Python基礎(chǔ)入門教程27:企業(yè)級開發(fā)基礎(chǔ) 面向?qū)ο髷U(kuò)展

來源:奇酷教育 發(fā)表于:

前面的章節(jié)中,我們已經(jīng)學(xué)習(xí)過面向?qū)ο蟮幕静僮?、面向?qū)ο蟮娜筇卣鞯脑敿?xì)操作,對于面向?qū)ο笥辛艘粋€初步的了解和認(rèn)知。本節(jié)內(nèi)容會針對

前面的章節(jié)中,我們已經(jīng)學(xué)習(xí)過面向?qū)ο蟮幕静僮?、面向?qū)ο蟮娜筇卣鞯脑敿?xì)操作,對于面向?qū)ο笥辛艘粋€初步的了解和認(rèn)知。
本節(jié)內(nèi)容會針對面向?qū)ο蟮某绦蛟O(shè)計進(jìn)行一部分的擴(kuò)展和補(bǔ)充,方便我們在項(xiàng)目開發(fā)過程中的操作能更加的全面和完善。
 
0. 本節(jié)內(nèi)容
 
0.1 類型屬性和對象成員屬性
 
0.2 對象屬性的外部聲明和限制
 
0.3 多繼承機(jī)制下的注意的問題
 
0.4 類的定制屬性~魔法方法
 
0.5 特殊的類型:枚舉
 
1. 類型屬性和對象的成員屬性
 
在之前的章節(jié)中,我們就類和對象已經(jīng)學(xué)習(xí)過了如下內(nèi)容
 
類型的定義
類型中屬性的定義
類型中方法的定義
屬性和方法的私有化操作
當(dāng)類型在處理的過程中,我們知道在init()函數(shù)中可以初始化類的成員屬性/變量,在創(chuàng)建對象的過程中,每個對象的成員屬性都是互相獨(dú)立且互不影響的;對象A是不能直接使用對象B的成員屬性的值的,而是要通過對象B調(diào)用獲取對象B的屬性;
python的類型中,還提供了一種方式,可以直接定義類的屬性,這樣定義的屬性是當(dāng)前類型創(chuàng)建的所有對象所共享的,也可以直接通過類名稱調(diào)用,這樣的屬性稱為:類屬性
 
類屬性:是定義在類型中的公開的屬性,可以讓通過當(dāng)前類型直接操作,可以是當(dāng)前類型創(chuàng)建的所有對象共享的數(shù)據(jù)


2. 對象屬性的外部聲明和限制
 
上面的代碼中,我們使用p1.onlineCount=15發(fā)現(xiàn)沒有修改類屬性,而是給p1增加了一個成員屬性,這是怎么回事呢?
 
觀察下面的代碼:

在上述代碼中,我們定義了一個空類型Person,在創(chuàng)建了Person的對象之后,可以在對象的引用變量上,給對象添加額外的成員屬性【切記,這里添加的額外的成員屬性僅限于當(dāng)前的這個對象,其他對象上不會出現(xiàn)】
 
這樣的操作方式,可以在一定程度上讓代碼的操作更加靈活,但是同時也降低了代碼的可讀性,試想一下~我們辛辛苦苦抽象定義好了類型Person,Person中已經(jīng)出現(xiàn)了我們所有人知道的屬性,結(jié)果在操作的過程中,朝陽群眾A創(chuàng)建的Person對象多出來了2個其他人不知道的屬性,朝陽群眾B創(chuàng)建的Person對象又多出來了其他人不知道的3個屬性,這是一件非??植赖氖虑?,會讓整個類型和對象的操作變得非常的混亂。

觀察上述代碼,兩個人創(chuàng)建的對象,一團(tuán)混亂,光是一個性別兩個開發(fā)人員定義的擴(kuò)展出來的成員變量都不一致,后續(xù)其他人在操作的時候都不知道應(yīng)該調(diào)用什么屬性來處理了。
 
python為了處理這樣的問題,提供了一個特殊的類屬性__slots__ ,該屬性的值是一個元組,元組中定義了類中可以出現(xiàn)的所有成員屬性的名稱


3. 多繼承機(jī)制下的注意的問題
 
多繼承機(jī)制,在操作的過程中,同樣也是提高了代碼的處理靈活性,很大程度的擴(kuò)展了代碼的功能
 
在使用多繼承機(jī)制進(jìn)行程序設(shè)計開發(fā)的過程中一定要注意一個問題:當(dāng)前類繼承了一個或者多個父類,當(dāng)前類就同時繼承了父類中的公開的屬性和函數(shù),如果不同的父類中出現(xiàn)相同的屬性/函數(shù),就需要明確執(zhí)行的過程

4. 類的定制屬性~魔法方法
 
上面的代碼中,我們已經(jīng)看到了,類似__slots__這樣的變量在前后加了雙下劃線的,在python中會有特殊的含義,這里會繼續(xù)介紹一些常見的在面向?qū)ο箝_發(fā)過程中出現(xiàn)的一些這樣的魔法方法
 
4.1. 對象格式化打印輸出【__str__()】
 
常規(guī)情況下,對象直接輸出,會輸出對象的描述信息,晦澀難懂

我們突然發(fā)現(xiàn),直接打印對象,輸出的結(jié)果竟然是我們在__str__()方法中定義的字符串。其實(shí)我們在使用使用對象的時候,就會默認(rèn)調(diào)用對象的__str__()方法獲取對象的字符串描述信息,這個__str__()方法是從object對象繼承而來的,我們這里只是對它進(jìn)行了方法重寫。
 
另外,在命令行操作過程中,如果不用print()方法打印而是直接輸入對象,會發(fā)現(xiàn)執(zhí)行的結(jié)果又是讓人晦澀難懂的東西了,在命令行直接使用對象調(diào)用的不是對象的__str__()方法,而是__repr__()方法,只需要簡單的修改即可

肯定是不能這么干的~,所以出現(xiàn)錯誤:Person對象不是一個可執(zhí)行的東東
 
但是可以進(jìn)行如下的改造

5. 特殊的類型:枚舉
 
某些情況下,在我們項(xiàng)目開發(fā)過程中,會針對一些不會改變的數(shù)據(jù)進(jìn)行標(biāo)記,~常見的做法就是通過定義常量的情況進(jìn)行處理,如:在一個員工管理系統(tǒng)中,針對一年十二個月發(fā)放工資,這里的十二個月需要進(jìn)行標(biāo)記~每個月的天數(shù)、績效這些都不一定一致,可以按照下面的方式進(jìn)行處理:
5.1. 使用枚舉
 
上述代碼中,我們通過三種方式進(jìn)行了枚舉的定義和處理,但是每一種方式都多多少少存在一些遺憾,python中提供了一種特殊的類型:枚舉,來處理這樣定義常量的問題:
 
枚舉的語法結(jié)構(gòu):是不是和上面我們使用元組的方式特別相像呢?!

5.2. 自定義枚舉
 
Python提供的枚舉已經(jīng)完全足夠適用于我們項(xiàng)目中使用的各種場景了
如果枚舉的細(xì)節(jié)處理程度還是不滿足您的項(xiàng)目,可以通過python提供的方式進(jìn)行自定義枚舉的定義


>>>更多VR/AR入門教程:VR入門

平塘县| 行唐县| 乌兰县| 南康市| 池州市| 桐柏县| 横峰县| 萨嘎县| 普格县| 开封市| 上虞市| 龙南县| 上栗县| 鲁山县| 呼玛县| 策勒县| 大冶市| 夏河县| 祥云县| 张掖市| 和林格尔县| 大港区| 宁国市| 内黄县| 西城区| 芜湖市| 夹江县| 贵阳市| 瓦房店市| 永丰县| 沛县| 军事| 册亨县| 泗水县| 中卫市| 新巴尔虎左旗| 莱西市| 吴川市| 常宁市| 中山市| 晋中市|