奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌

您現在所在的位置:首頁 >學習資源 > Python全棧+人工智能入門教材 > Python基礎入門教程27:企業級開發基礎 面向對象擴展

Python基礎入門教程27:企業級開發基礎 面向對象擴展

來源:奇酷教育 發表于:

前面的章節中,我們已經學習過面向對象的基本操作、面向對象的三大特征的詳細操作,對于面向對象有了一個初步的了解和認知。本節內容會針對

前面的章節中,我們已經學習過面向對象的基本操作、面向對象的三大特征的詳細操作,對于面向對象有了一個初步的了解和認知。
本節內容會針對面向對象的程序設計進行一部分的擴展和補充,方便我們在項目開發過程中的操作能更加的全面和完善。
 
0. 本節內容
 
0.1 類型屬性和對象成員屬性
 
0.2 對象屬性的外部聲明和限制
 
0.3 多繼承機制下的注意的問題
 
0.4 類的定制屬性~魔法方法
 
0.5 特殊的類型:枚舉
 
1. 類型屬性和對象的成員屬性
 
在之前的章節中,我們就類和對象已經學習過了如下內容
 
類型的定義
類型中屬性的定義
類型中方法的定義
屬性和方法的私有化操作
當類型在處理的過程中,我們知道在init()函數中可以初始化類的成員屬性/變量,在創建對象的過程中,每個對象的成員屬性都是互相獨立且互不影響的;對象A是不能直接使用對象B的成員屬性的值的,而是要通過對象B調用獲取對象B的屬性;
python的類型中,還提供了一種方式,可以直接定義類的屬性,這樣定義的屬性是當前類型創建的所有對象所共享的,也可以直接通過類名稱調用,這樣的屬性稱為:類屬性
 
類屬性:是定義在類型中的公開的屬性,可以讓通過當前類型直接操作,可以是當前類型創建的所有對象共享的數據


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

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

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


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

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

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

肯定是不能這么干的~,所以出現錯誤:Person對象不是一個可執行的東東
 
但是可以進行如下的改造

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

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


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

主站蜘蛛池模板: 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 烘干设备-热泵烘干机_广东雄贵能源设备有限公司 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 荣事达手推洗地机_洗地机厂家_驾驶式扫地机_工业清洁设备 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 噪声治理公司-噪音治理专业隔音降噪公司 | 连续油炸机,全自动油炸机,花生米油炸机-烟台茂源食品机械制造有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 除甲醛公司-甲醛检测-广西雅居环境科技有限公司 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 影像测量仪_三坐标测量机_一键式二次元_全自动影像测量仪-广东妙机精密科技股份有限公司 | 茶叶百科网-茶叶知识与茶文化探讨分享平台 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | QQ房产导航-免费收录优秀房地产网站_房地产信息网 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 踏板力计,制动仪,非接触多功能速度仪,逆反射系数测试仪-创宇 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 螺杆泵_中成泵业 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 分类168信息网 - 分类信息网 免费发布与查询 | 国际高中-国际学校-一站式择校服务-远播国际教育| 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 |