物件導向程式設計

2022-08-17 13:36:17 字數 1853 閱讀 8517

優點是解決了程式的拓展性。對某乙個物件單獨修改,會立刻反應到整個體系中。

缺點:可控性差,無法向面向過程的程式設計流水線式的可以很精緻的**問題和處理問題和處理流程與結果

需求經常變化的軟體,一般需求的變化都集中在使用者層,網際網路應用,企業內部軟體,遊戲等都是物件導向的程式設計大顯身手的好地方

類:具有同一特徵的一類事物

物件/例項:具有的某乙個事物

例項化:類--->物件的過程

靜態變數

類中的變數是靜態變數

物件中的變數只屬於物件本身,每個物件都屬於位元組的空間來儲存物件變數

繫結方法

乙個類的物件是另乙個類物件的屬性

當類之間有顯著不同,並且較小的類是較大的類所需的元件時,用組合比較好

繼承語法

繼承 -- 需要解決**的重複

b繼承a,a是父類,b是子類

a是父類 基類 超類

b是子類 派生類

繼承的用法

子類中可以使用父類中的方法 靜態變數

當子類和父類的方法重名的時候,我們只會用子類的方法,而不會去呼叫父類的方法

子類想要呼叫父類的方法的同時還想執行自己的同名方法

在子類的方法中呼叫父類的方法:父類名.方法(self)

單繼承子類的物件,如果去呼叫方法,永遠優先呼叫自己的

如果自己有,用自己的

如果自己沒有,用父類的

自己有 還想用父類的:直接在子類方法中呼叫父類的方法 父類名.方法名(self)

多繼承乙個類有多個父類,在呼叫父類方法的時候,按照繼承順序,先繼承的先尋找

在python3中 所有的類都繼承object類,都是新式類

python2中 不繼承object的類都是經典類,繼承object類的就是新式類了

單繼承方面:無論是新式類還是經典類都是一樣的

多繼承:

在走到乙個點,下乙個點既可深度走,也可以從廣度走的時候,總是先走廣度,再走深度,廣度優先

在經典類中,都是深度優先,總是在一條路走不通之後在換一條路,走過的點不會再走

乙個類表現出的多種形態

在python中處處是多型

如果想讓兩個型別的物件都可以傳,那麼必須讓兩個類繼承同乙個父類,在制定類的時候使用父類來指定

反射hashttr:判斷某個函式或者變數是否存在

getattr:如果instance物件中有屬性name則列印self.name的值,否則列印'net find'

callable:判斷物件是否可以被呼叫,可以返回true,不可以返回false

廣義上的封裝

把屬性和方法裝起來,在外部不能直接呼叫,需要通過類名的方式呼叫

狹義上的封裝

把屬性和方法藏起類,在外部不能呼叫,只能在內部偷偷呼叫

封裝的語法

私有的靜態變數

私有的例項變數

私有的繫結方法

私有的特點

私有的可以在內部使用

私有的不能在外部使用

私有的也不可以在子類中使用

原理

class user:

__country = 'china'

__role = '法師'

def func(self):

print(self.__country)#在內部呼叫的時候會自動幫你加上類名

print(user.__country)#早類的外部呼叫不到是因為python沒有自動為你加_user

公有的 public 類內類外都能用,父類子類都能用 python支援

保護的 protect 保護的 類內能用,父類子內都能用,類外不能用 python不支援

私有的 private 私有的 本類的類內部能用,其他地方都不能用 python支援

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...

物件導向程式設計

物件導向程式設計 抽象 封裝 繼承 多型 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。開放封閉原則 軟體實體應該可以擴充套件,但是不可修改。所有的設計模式都是對不同的可變性進行封裝,從而使系統在不同的角度上達到開發封閉原則。依賴倒轉原則 a 高層不應該依賴低層,兩個都應該依賴抽象。b ...

物件導向程式設計

class team def init self self.name tampa bay buccaneers bucs team print bucs.name tampa bay buccaneers 當呼叫team 函式時,會自動呼叫init函式,self是自動傳入到init中的引數,它指向當...