這篇文章將為大家詳細講解有關python面向對象編程的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
面向對象編程簡單來說就是基于對 類 和 對象 的使用,所有的代碼都是通過類和對象來實現的編程就是面向對象編程!
面向對象的三大特性:封裝、繼承、多態
首先創建一個類
#使用class創建一個School類,類中有個student方法
class School:
def student(self):
pass
a1=School()一、封裝
1、封裝:將某些內容先封裝到一個地方,等到需要的時候再去調用
class School: def __init__(self,name,age): #構造方法,創建對象是執行
self.name=name
self.age=age#創建對象a1,a2a1=School("zhangsan",18)
a2=School("lisi",18)上面代碼實現的就是封裝的功能,把各自的name和age分別封裝到了self的name和age屬性中,就等于被封裝到了對象a1和a2中
類中定義的函數叫做方法,帶有__init__的函數稱為構造方法,在創建a1,a2對象時會自動執行。
2、調用:調用有兩種方式,通過對象直接調用和通過self間接調用
通過對象直接調用
class School: def __init__(self,name,age):
self.name=name
self.age=age def student(self): print("name:%s,age:%s"%(self.name,self.age))#創建對象a1,a2a1=School("zhangsan",18)
a2=School("lisi",18)
print a1.name,a1.age
print a2.name,a2.age#執行結果: zhangsan 18
lisi 18通過self間接調用
class School:
def __init__(self,name,age):
self.name=name
self.age=age
def student(self):
print("name:%s,age:%s"%(self.name,self.age))
#創建對象a1,a2
a1=School("zhangsan",18)
a2=School("lisi",18)
#執行類中的方法時,通過self間接調用被封裝的內容
a1.student()
a2.student()
#執行結果:
#name:zhangsan,age:18
#name:lisi,age:18二、繼承
1、繼承:既派生類(子類)可以繼承基類(父類)的方法,我們可以將多個類共有的方法提取到父類當中,這樣子類僅需繼承父類而不必一一實現每個方法
在類名后面括號中寫上另一個類,表示繼承了那個類
class School:
def __init__(self,name,age):
self.name=name
self.age=age
def student(self):
print("name:%s,age:%s"%(self.name,self.age))
def classroom(self):
print("%s去教室"%self.name)
class SchoolA(School): #SchoolA繼承School
def __init__(self,name):
self.name=name
class SchoolB(SchoolA): #SchoolB繼承SchoolA
def __init__(self,name):
self.name=name
#創建對象a1
a1=SchoolA("zhangsan")
a1.classroom()
#創建對象a2
a2=SchoolB("lisi")
a2.classroom()
#執行結果:
# zhangsan去教室
# lisi去教室在上面代碼中我們可以看到,在SchoolA和SchoolB中都沒有classroom方法,但由于SchoolB繼承了SchoolA,而SchoolA又繼承了School,所以他們創建對象后都能
調用School中的classroom方法。
2、多繼承
在python中,類還可以繼承多個類,在繼承多個類時,他對類中的函數查找有兩種方式
深度優先:類是經典類時,多繼承情況下,會按照深度優先方式查找
廣度優先:類是新式類時,多繼承情況下,會按照廣度優先方式查找
(在python3.x中)都默認為廣度優先,但還是可以了解一下兩個的區別,新式類:當前類或者基類繼承了objiect類就叫新式類,否者就是經典類。
關于python面向對象編程的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。