07-Python之面向对象编程(定义)
# 面向?qū)ο笠恍┗纠斫?/span>
- 面向?qū)ο缶幊?Object Oriented Programming, OOP),是一種程序設(shè)計思想。
- 主要針對大型軟件設(shè)計而提出,使軟件設(shè)計更加靈活。
- 支持代碼復(fù)用和設(shè)計復(fù)用,使代碼由更好的可讀性和可擴(kuò)展性。
- OO: 面向?qū)ο?/span>
- OOA:面向?qū)ο蟮姆治?/span>
- OOD:面向?qū)ο蟮脑O(shè)計
- OOI:面向?qū)ο蟮膶?shí)現(xiàn)
- OOP:面向?qū)ο蟮木幊?/span>
- 面向?qū)ο蟮膶?shí)現(xiàn)過程:OOA->OOD->OOI
- 類和對象的概念:?
- 對象:具體的事物,單個個體,類中的一個實(shí)例
- 作為程序的基本單元,一個對象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。
- 類:抽象名詞,代表一個集合,共性的事物
- 對相同類型的對象進(jìn)行分類、抽象后,得出共同的特征而形成了類。
- 類跟對象的關(guān)系:
- 一個是抽象,代表的是一大類事物
- 一個具象,代表一類事物的某一個個體
# 類的定義
- 基本格式:
class ClassName(object):
屬性...
方法...
......
- 定義一個類:
- 必須用class關(guān)鍵字
- 類由屬性和方法構(gòu)成,其他不允許出現(xiàn)
- 成員屬性定義可以直接使用變量賦值,如果沒有值,使用None
- 類的注釋,方便理解類的作用,包括屬性方法。
- 類的命名規(guī)則推薦:
- 遵守變量命名的規(guī)范
- 大駝峰(有一個或者多個單詞構(gòu)成,每個單詞首字母大寫,單詞跟單詞之間相連)
- 盡量避開跟系統(tǒng)命名相似的命名
- (object)表示類是從哪個類繼承下來的,默認(rèn)是object類.(可省略)
?
- 類當(dāng)中基本的內(nèi)容:
- 屬性:
- 概念: 一個對象的特征(變量)
- 分類:
- 1.實(shí)例屬性:
- 一般在構(gòu)造函數(shù)__init__()中定義,定義和使用必須以self作為前綴
- 實(shí)例屬性屬于實(shí)例(對象),只能通過對象名訪問。
- 2.類屬性:
- 是指類中所有方法之外定義的數(shù)據(jù)成員,可以通過類名訪問,也可以通過對象訪問
- 分類:公有屬性、保護(hù)屬性、私有屬性
- 方法:
- 概念:一個對象的行為,稱為方法(函數(shù))
- 分類:
- 1.實(shí)例方法
- 公有方法
- 通過對象名調(diào)用
- 私有方法
- 不能通過對象名直接調(diào)用,
- 只能在屬于對象的方法中通過self調(diào)用或者在外部通過其他特殊方式調(diào)用
- 注意:
- 形參列表第一個參數(shù)都要定義且最好命名為self
- 默認(rèn)第一個參數(shù)代表的是實(shí)例化的類對象的引用
- 需要實(shí)列化對象才能使用,使用過程中可能需要截至對象的其他對象的方法完成
- 調(diào)用方法:
- 標(biāo)準(zhǔn)調(diào)用(推薦使用)、類調(diào)用、間接調(diào)用
- 2.靜態(tài)方法
- 使用staticmethod()內(nèi)置函數(shù)。
- 默認(rèn)第一個參數(shù)需要接收到一個類
- 調(diào)用:通過類名或?qū)ο竺?/span>
- 不需要實(shí)例化,通過類直接訪問,多個實(shí)例共享此靜態(tài)方法
- 不能直接訪問屬于對象的成員,只能訪問屬于類的成員
- 3.類方法
- 一般將cls作為類方法的第一個參數(shù)名稱,調(diào)用類方法時不需要為該參數(shù)傳遞值
- 可以通過類或者它的實(shí)例來調(diào)用
- 關(guān)于self:
- 類的所有實(shí)例方法都必須至少有一個名為self的參數(shù),并且必須是方法的第一個形參。
- self 在對象的方法中表示當(dāng)前對象本身。
- 如果通過對象調(diào)用第一個方法,那么該對象會自動傳入到當(dāng)前方法的第一個參數(shù)中
- self 不是關(guān)鍵字
- 只是一個普通的參數(shù)
- 理論上可以用任何一個普通變量代替
- 方法中有self 形參的方法稱為非綁定的方法,
- 可以通過對象訪問
- 沒有self的是綁定類方法,只能通過類訪問
- 使用類訪問綁定類的方法時,如果類方法總中需要訪問當(dāng)前類的成員,可以通過__class__成員來訪問
* 案例1.創(chuàng)建類
# 1.簡單的定義(經(jīng)典類) class Person: # 括號可以省略pass # pass就是一個占位符,什么也不是 ######################################## # 2.創(chuàng)建包含屬性的類 class Person:# 1.類屬性# 1.1公有屬性name = "xiaohei"# 1.2保護(hù)的屬性_sex = "boy" # 以一個"_"開頭則表示是被保護(hù)的屬性# 1.3私有屬性__age = 3 # 以兩下劃線"__"開頭的則表示是私有屬性# 2.實(shí)例屬性def __init__(self, c): # self形參不能缺少self.master = "humance"self.aother = cself.other = '添加屬性'print(c) ######################################## # 3.創(chuàng)建包含方法的類 class Person:# 類屬性name = "xiaobai" # 類方法# 1.共有方法(實(shí)例方法)def eat(self, f):print(self, f)# 2.私有方法def __siyoufangfa(self):print("這是一個私有方法", self)# 3.類方法 @classmethoddef leifangfa(cls):print("這是一個類方法",cls)# 4.靜態(tài)方法 @staticmethoddef jingtaifangfa():print("這是一個靜態(tài)方法")?
轉(zhuǎn)載于:https://www.cnblogs.com/cmn-note/p/11234340.html
總結(jié)
以上是生活随笔為你收集整理的07-Python之面向对象编程(定义)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nuget常用命令(转)
- 下一篇: RDS使用只读副本和多AZ的区别在于数据