首頁  >  文章  >  後端開發  >  Python中的單繼承與多繼承

Python中的單繼承與多繼承

不言
不言原創
2018-06-04 17:44:082349瀏覽

這篇文章主要介紹了Python中的單繼承與多繼承,結合實例詳細分析了Python面向對象程序設計中單繼承與多繼承的概念、原理、實現方法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了Python中的單一繼承與多繼承。分享給大家供大家參考,具體如下:

單繼承

一、介紹

#Python 同樣支持類別的繼承,如果一種語言不支援繼承,類別就沒有意義。衍生類別的定義如下所示:

class DerivedClassName(BaseClassName1):
  
  .
  .
  .
  

需要注意圓括號中基底類別的順序,若是基底類別中有相同的方法名,而在子類別使用時未指定,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):
  
  .
  .
  .
  

需要注意圓括號中父類別的順序,若是父類別中有相同的方法名,而在子類別使用時未指定,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn