這篇文章主要介紹了Python中的單繼承與多繼承,結合實例詳細分析了Python面向對象程序設計中單繼承與多繼承的概念、原理、實現方法及相關操作注意事項,需要的朋友可以參考下
本文實例講述了Python中的單一繼承與多繼承。分享給大家供大家參考,具體如下:
單繼承
一、介紹
#Python 同樣支持類別的繼承,如果一種語言不支援繼承,類別就沒有意義。衍生類別的定義如下所示:
class DerivedClassName(BaseClassName1): <statement-1> . . . <statement-N>
需要注意圓括號中基底類別的順序,若是基底類別中有相同的方法名,而在子類別使用時未指定,python從左到右搜尋即方法在子類別中找不到時,從左到右查找基底類別中是否包含方法。
BaseClassName(範例中的基底類別名稱)必須與衍生類別定義在一個作用域內。
除了類,還可以用表達式,基類定義在另一個模組中時這一點非常有用:
class DerivedClassName(modname.BaseClassName):
二、程式碼
# -*- coding:utf-8 -*- #! python3 class people: #定义基本属性 name ='' age =0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight =0 #定义构造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 说: 我 %d 岁。"%(self.name,self.age)) #单继承示例 class student(people): grade ='' def __init__(self,n,a,w,g): #调用父类的构造函数,下面两种方式都可以 #people.__init__(self,n,a,w) super().__init__(n,a,w) self.grade = g #覆写父类的方法 def speak(self): print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade)) s = student('ken',10,60,3) s.speak()
##ken 說: 我10歲了,我在讀3 年級
多繼承
# #Python同樣有限的支援多繼承形式。多繼承的類別定義形如下例:
class DerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N>
需要注意圓括號中父類別的順序,若是父類別中有相同的方法名,而在子類別使用時未指定,python從左到右搜尋即方法在子類別中找不到時,從左到右查找父類別中是否包含方法。
###二、程式碼############# -*- coding:utf-8 -*- #! python3 #类定义 class people: #定义基本属性 name ='' age =0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight =0 #定义构造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 说: 我 %d 岁。"%(self.name,self.age)) #单继承示例 class student(people): grade ='' def __init__(self,n,a,w,g): #调用父类的构函 people.__init__(self,n,a,w) self.grade = g #覆写父类的方法 def speak(self): print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade)) #另一个类,多重继承之前的准备 class speaker(): topic ='' name ='' def __init__(self,n,t): self.name = n self.topic = t def speak(self): print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic)) #多重继承 class sample(speaker,student): a ='' def __init__(self,n,a,w,g,t): student.__init__(self,n,a,w,g) speaker.__init__(self,n,t) test = sample("Tim",25,80,4,"Python") test.speak()#方法名同,默认调用的是在括号中排前地父类的方法
我叫 Tim,我是一个演说家,我演讲的主题是 Python
以上是Python中的單繼承與多繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!