python學習 物件導向

2021-10-06 04:49:39 字數 2258 閱讀 6611

「」"

繼承 —> 從已經有的類建立新類的過程,提供繼承資訊的叫父類(超類、基類),

得到繼承資訊的叫子類(派生類)。繼承是實現**復用的方式,繼承關係是一種is-a關係。

a student is a person. a teacher is a person.

「」"

class person:

'''定義人類

屬性name == 名字

屬性nationality == 位址

'''def __init__(self, name, nationality):

self.name = name

self.nationality = nationality

def eat(self):

print(f'正在吃飯')

def walk(self):

print(f'正在行走')

def sleep(self):

print(f'正在睡覺')

class artist(person): #繼承人的類 person

'''藝術家類

'''def play_piano(self):

print(f'正在彈鋼琴')

#藝術家特有的行為

def play_violin(self):

print(f'正在拉小提琴')

class monk(person): #繼承人的類 person

'''和尚類

''' def chant(self):

print(f'正在念經')

#和尚特有的行為

def knock_the_bell(self):

print(f'正在敲鐘')

def main():

a = monk('王大錘','重慶'』)

a.chat()

#本次呼叫沒用到nationality引數

#輸出為: 王大錘正在念經!!!

if __name__ == '__main__'

main()

python中允許多重繼承(乙個類可以有多個父類)

但是實際開發時應該盡可能避免使用多重繼承,因為可能會讓**變得混亂

#接著上面**繼續

class student(artist, monk):

"""學生"""

def __init__(self, stuid, name, nationality):

self.id = stuid

super().__init__(name, nationality)#因為從寫了初始化方法id屬

性,別的屬性直接繫結父類屬性即可。

def study(self, course_name):

print(f'正在學習')

student = student(1001,'王大錘','湖南長沙')

student.study('python程式開發') #輸出為:王大錘正在學習python程式開發

student.eat()#輸出為:王大錘正在吃飯

student.chant()#輸出為:王大錘正在念經

另外在介紹乙個mro(方法解析順序)

python的mro即method resolution order(方法解析順序),也就是在python中的類的繼承順序是怎樣的。在python2.3之前,mro的實現是基於dfs的,而在python2.3以後mro的實現是基於c3演算法(我這裡兩種演算法的具體實現都不詳述)。c3演算法最早被提出是用於lisp的,應用在python中是為了解決原來基於深度優先搜尋演算法不滿足本地優先順序,和單調性的問題。本地優先順序:指宣告時父類的順序,比如c(a,b),如果訪問c類物件屬性時,應該根據宣告順序,優先查詢a類,然後再查詢b類。單調性:如果在c的解析順序中,a排在b的前面,那麼在c的所有子類裡,也必須滿足這個順序。

總的來說,乙個類的 mro 列表就是合併所有父類的 mro 列表,並遵循以下三條原則:

子類永遠在父類前面

如果有多個父類,會根據它們在列表中的順序被檢查

如果對下乙個類存在兩個合法的選擇,選擇第乙個父類

class a(object):

pass

class b(a):

pass

class c(b):

pass

print(c.mro())

'''繼承解析順序

輸出為:

[, ,

, ]'''

python物件導向學習 python物件導向學習

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。物件導向三個概念 1.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...

python物件導向學習

1.物件 物件是資料和功能 函式 的集合體 2.類 類是具有共同屬性 資料 函式 的物件的總稱 注 先定義類後例項化物件 3.屬性訪問 可以通過 dict 訪問屬性的值 4.屬性查詢和方法繫結 物件的命名空間裡只存放著物件獨有的屬性,而物件們相似的屬性是存放於類中的。物件在訪問屬性時,會優先從物件本...

python學習 物件導向程式設計

物件導向程式設計 object oriented programming,簡稱oop,是一種程式設計思想。oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把...