电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺析Python面向對象編程

瀏覽:3日期:2022-07-18 08:05:01

概述

很多人接觸Python,都是從爬蟲開始,其實很多語言都可以做爬蟲,只是Python相對其他語言來說,更加簡單而已。但是Python并不止于爬蟲,在人工智能,科學計算等方面的應用更加廣泛。古人云:萬丈高樓平地起,要想有長足的發展,打好基礎很重要,本文主要講解Python的面向對象相關知識,僅供學習分享使用,如有不足之處,還請指正。

面向對象的特征

類:用來描述相同事物的特征的集合,如:Person 類,表示人,具有人的屬性和特征。對象:通過類定義的具體的實例,如:zhangsan 表示一個具體的人。繼承:是指派生類繼承基類的方法和屬性,并具有自己屬性和特征,如:Man是Person的子類。封裝:隱藏數據和實現細節,提供對外訪問方法。多態:一個基類,可以有多個派生類,可以有不同的形態。抽象:拋開細節,只關注本質特征的過程。以上是面向對象的基本特征,那么Python在面向對象方面是如何做的呢?

創建類

如下所示:

使用 class 語句來創建一個新類,class 之后為類的名稱并以冒號結尾。 Python的類,沒有大括號表示類的內容范圍,而是通過縮進來實現。 類的成員方法和普通方法的區別是,方法定義的第一個參數是self,表示類的實例,但在調用時不需要。 其中__init__方法為類的初始化方法,當聲明對象時,會調用對應的方法。 其中__del__方法為析構函數,當類被釋放時調用。

class Employee: '''員工類''' emp_count = 0 # 變量是一個類變量,它的值將在這個類的所有實例之間共享 def __init__(self, name, salary): '''初始化''' self.name = name self.salary = salary Employee.emp_count += 1 def display_count(self): '''顯示數量''' print(’Total Employee =’, Employee.emp_count) def display_employee(self): '''顯示信息''' print(’name =’, self.name, ’, salary = ’, self.salary) def prt(self): '''打印自己''' print(self) print(self.__class__) def __del__(self): '''析構函數''' print(self, ’被釋放了’)

創建對象

Python創建對象,不需要new關鍵字,類似于函數的調用,和Java及.Net不同。如下所示:

’創建第一個對象’ emp = Employee(’Jack’, 20) emp.display_count() emp.display_employee() emp.prt()

動態添加與刪除對象屬性

對象的屬性可以動態添加,這點與編譯型語言不同,如下所示:

emp.age = 17 # 添加一個 ’age’ 屬性 emp.age = 28 # 修改 ’age’ 屬性 del emp.age # 刪除 ’age’ 屬性

也可以通過Python的內置方法來添加和獲取屬性,如下所示:

print(getattr(emp, ’name’)) # 獲取屬性print(hasattr(emp, ’age’)) # 是否包含屬性setattr(emp, ’age’, 18) # 設置屬性和值print(hasattr(emp, ’age’)) # 是否包含屬性print(getattr(emp, ’age’)) # 獲取屬性delattr(emp, ’age’) # 刪除屬性print(hasattr(emp, ’age’)) # 是否包含屬性

Python也有內置類的一些屬性,如下所示:

# 內置對象 print('Employee.__doc__:', Employee.__doc__) print('Employee.__name__:', Employee.__name__) print('Employee.__module__:', Employee.__module__) print('Employee.__bases__:', Employee.__bases__) print('Employee.__dict__:', Employee.__dict__)

類的屬性與方法

類的私有屬性,以雙下劃線開頭,只可以在類內部通過self進行訪問。 類的protected屬性,以下劃線開頭,只允許子類和自身調用。 在類的內部,使用 def 關鍵字可以為類定義一個方法,與一般函數定義不同,類方法必須包含參數 self,且為第一個參數 類的私有方法:以兩個下劃線開頭,聲明該方法為私有方法,不能在類的外部調用。在類的內部調用 self.__private_methods

如下所示:

class JustCounter: '''類描述''' __secretCount = 0 # 類的私有變量 publicCount = 0 # 公開變量 def count(self): self.__secretCount += 1 self.publicCount += 1 print(’私有變量:’, self.__secretCount)

Python不允許實例化的類訪問私有數據,但你可以使用 object._className__attrName( 對象名._類名__私有屬性名 )訪問屬性,如下所示:

print(counter._JustCounter__secretCount)

類的繼承

面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。通過繼承創建的新類稱為子類或派生類,被繼承的類稱為基類、父類或超類。

Python中的繼承通過 class 子類名(父類名): 的格式實現。 子類可以調用父類的方法和定義自己的方法。 如果父類方法的功能不能滿足需求,子類可以重寫(overrides)父類的方法。

如下所示:Parent表示一個父類,擁有自己的屬性和方法。

class Parent: '''定義父類''' parentAttr = 100 def __init__(self): print(’調用父類的構造函數’) def parentMethod(self): print(’調用父類方法’) def setAttr(self, attr): Parent.parentAttr = attr def getAttr(self): print(’父類屬性:’, Parent.parentAttr) def myMethod(self): print(’我是父類的MyMethod’)

Child表示一個子類,繼承自Parent,如下所示:

class Child(Parent): '''定義子類''' def __init__(self): print(’調用子類的構造方法’) def childMethod(self): print(’調用子類方法’) def myMethod(self): '''重寫Overrides父類方法''' print(’我是子類的MyMethod’) def __str__(self): '''重寫方法,適合人閱讀''' return ’str方法返回’

子類的實例化

如下所示:

c = Child() # 實例化子類對象 c.childMethod() # 調用子類方法 c.parentMethod() # 調用父類方法 c.setAttr(200) # 再次調用父類方法,設置屬性 c.getAttr() # 再次調用父類方法 獲取屬性 c.myMethod() # 調用的是子類的MyMethod

可以通過內置函數,判斷子類與類的關系,如下所示:

print(issubclass(Child, Parent)) # 判斷是否是對應的父子關系 print(isinstance(c, Child)) # 判斷是否是實例對象 print(isinstance(c, Parent)) # 判斷是否是實例對象

以上就是淺析Python面向對象編程的詳細內容,更多關于Python面向對象編程的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 硬齿面减速机[型号全],ZQ减速机-淄博久增机械 | 加热制冷恒温循环器-加热制冷循环油浴-杭州庚雨仪器有限公司 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 陕西自考报名_陕西自学考试网| 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 太平洋亲子网_健康育儿 品质生活| 天品互联-北京APP开发公司-小程序开发制作-软件开发 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 旋转滴界面张力仪(张力测定仪器)-百科| 信阳市建筑勘察设计研究院有限公司 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 营养师网,营养师考试时间,报名入口—网站首页 | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 广东泵阀展|阀门展-广东国际泵管阀展览会| 高硼硅玻璃|水位计玻璃板|光学三棱镜-邯郸奥维玻璃科技有限公司 高温高压釜(氢化反应釜)百科 | 江苏齐宝进出口贸易有限公司| 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 蜗轮丝杆升降机-螺旋升降机-丝杠升降机厂家-润驰传动 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 |