Python基本語法10

面向?qū)ο蟪绦蛟O(shè)計

面向過程和面向?qū)ο?/p>

面向過程

分析出問題的解決步驟,解決程序代碼一一實現(xiàn)的過程

程序=數(shù)據(jù)結(jié)構(gòu)+算法

面向?qū)ο?/p>

分析出問題中存在的對象,用代碼定義對象的屬性和行為,從而實現(xiàn)編程目的

程序=對象+行為

類和對象

定義:類是一個抽象的概念,它是具有相同屬性和行為的對象的統(tǒng)稱。

類創(chuàng)建格式

class類名(父類名):

#類屬性

屬性名=屬性值

#初始化方法

def_ _ init_ _(self.形參列表):

#實例屬性

delf.實例屬性名=形參

#構(gòu)造方法

def _ _new__(cls,形參列表):

cls.類屬性 = 形參

return 父類.__new__(cls)

#字符串方法

def__str__(self):

return "字符串"

#析構(gòu)方法

def__del__(self):

print("字符串")

#實例方法

del 方法名 (self,形參列表):

方法體

#類方法

@classmethod

def 方法名(cls,形參列表):

方法體

#靜態(tài)方法

@starticmethod

def 方法名(形參列表):

方法體

對象

定義:客觀存在的事務(wù),由事物特征和功能組成

創(chuàng)建對象格式

對象名=類名(實參列表)

對象調(diào)用類的屬性和方法

調(diào)用屬性:對象名.屬性

調(diào)用方法:對象名。方法名(實參列表)

特殊的父類方法

初始化方法__init__(self)

初始化實例屬性,在類對象的創(chuàng)建中會自動調(diào)用,當(dāng)不起重寫父類的初始化方法時,系統(tǒng)會自動調(diào)用無參的初始化方法

構(gòu)造方法__new__(cls)

重新構(gòu)造類實例,通常它用于創(chuàng)造不可變類

1.默認參數(shù)為cls,指向類實例

2.構(gòu)造方法中必須使用return返回父類的構(gòu)造方法

3.構(gòu)造方法中的形參必須與初始化方法中的形參一致

4.當(dāng)對象創(chuàng)建時,先執(zhí)行構(gòu)造函數(shù),然后執(zhí)行初始化方法

字符串方法__str__(self)

當(dāng)使用print()打印對象名時,可以重寫該方法實現(xiàn)不同的輸出內(nèi)容

析構(gòu)方法__del__(self)

用于刪除對象從而釋放該類在內(nèi)存中的空間,在對象定義之后可通過‘del 對象名’的方式刪除該對象,同時自動調(diào)用該方法

類體中方法總類

實例方法

定義

def 實例方法名(self,形參列表):

方法體

方法體中可以通過self。實例屬性名來調(diào)用實例屬性,也可以通過類名.類屬性調(diào)用類屬性

調(diào)用

使用對象名調(diào)用該方法

類方法

定義格式

@classmethod

def 類方法名(cls,形參列表):

方法體

方法體中只能通過cls.類屬性名來調(diào)用,不能調(diào)用實例屬性

調(diào)用

使用對象名和類名調(diào)用該方法

靜態(tài)方法

定義格式

@starticmethod

def 靜態(tài)方法名(形參列表):

方法體

方法體中既不能調(diào)用類屬性也不能調(diào)用實例屬性

調(diào)用

使用對象名和類名調(diào)用該方法

特征

封裝

定義

將類體中的屬性、行為、或行為的細節(jié)隱藏起來的過程

步驟

1.將封裝的屬性或行為私有化

2.生成get和set方法便于外部程序的調(diào)用

特殊變量

全局變量

由大寫字母組成,可以由本類及子類和外部程序調(diào)用

保護變量

由_小寫字母,可以由本類及子類訪問

私有變量

由_ _小寫字母,只能由本類訪問,不能由子類訪問

系統(tǒng)變量

由_ _ 小寫字母_ _ 組成,由系統(tǒng)定義的屬性

繼承

定義

為了實現(xiàn)代碼的拓展功能,可以在類的基礎(chǔ)上定義它的子類,作為子類可以繼承父類的公有屬性和方法,也可以定義子類的屬性和方法

分類

單繼承

class 子類名(父類名):

#初始化方法

def __init__(self,父類的形參,子類的形參):

super() __init__(父類的形參)

多繼承

class 子類名(父類1,父類2,......):

#初始化方法

def__init__(self,父類1形參,父類2形參,子類的形參):

父類1.__init__(self,父類的形參)

父類2.__init__(self,父類的形參)

說明

1.子類可以繼承父類的初始化方法,公有屬性和公有方法,不能繼承私有屬性和私有方法,子類可以定義自己的屬性和方法

2.子類繼承父類的屬性和方法,也可以重寫父類的方法

多態(tài)

定義

當(dāng)子類使用不同實例調(diào)用相同方法時,程序執(zhí)行的結(jié)果相同。

示例

# 類的多態(tài)

# 不同的子類對象,當(dāng)調(diào)用相同的父類方法時產(chǎn)生不同的執(zhí)行效果

class Animal (object):

? ? def __init__(self,name,food):

? ? ? ? self.name = name

? ? ? ? self.food = food

? ? def eat(self):

? ? ? ? print("飼養(yǎng)員給%s喂%s。"%(self.name,self.food))

class Monkey(Animal):

? ? def __init__(self,name,food):

? ? ? ? super().__init__(name,food)

class Horse(Animal):

? ? def __init__(self,name,food):

? ? ? ? super().__init__(name,food)

class Rabbit(Animal):

? ? def __init__(self,name,food):

? ? ? ? super().__init__(name,food)

# 飼養(yǎng)員類

class Breeder(object):

? ? def feedAnimal(self,n):? ? # n表示的是不同動物對象

? ? ? ? n.eat()

# 創(chuàng)建對象

bd = Breeder()

hz = Monkey("猴子","香蕉")

ma = Horse("馬","甘草")

tz = Rabbit("兔子","蘿卜")

bd.feedAnimal(hz)

bd.feedAnimal(ma)

bd.feedAnimal(tz)

# 飼養(yǎng)員類

class Breeder(object):

? ? def feedAnimal(self,n):? ? # n表示的是不同動物對象

? ? ? ? n.eat()

說明:多態(tài)的體現(xiàn),當(dāng)n傳入不同的對象名時,n調(diào)用相同方法eat()產(chǎn)生的程序結(jié)果不同

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容