中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python面向對象程序設計之繼承、多態原理與用法詳解

發布時間:2020-09-25 06:59:37 來源:腳本之家 閱讀:113 作者:隨風行云 欄目:開發技術

本文實例講述了Python面向對象程序設計之繼承、多態原理與用法。分享給大家供大家參考,具體如下:

相關內容:

繼承:多繼承、super、__init__、重寫父類變量或函數

多態


繼承:

  • 在Python3中,不寫基類的類默認繼承object
  • 繼承就是子類獲得了父類的全部功能:比如學生和老師都有“姓名,性別,年齡、ID”等學校人員屬性,如果學生和老師都直接繼承學校人員的“姓名,性別,年齡、ID”,那么就不必要在學生類和老師類中重復定義了。
  • 繼承指定類的方式是:class 類名(基類名Python面向對象程序設計之繼承、多態原理與用法詳解
class SchoolPerson:
  def study(self):
    print("it's time to study")

class Student(SchoolPerson):#繼承的方法
  pass

a=Student()
a.study()

----------------------
結果:
it's time to study

上述結果顯示,Student繼承了SchoolPerson中的study函數

  • python支持多繼承:class SubClassName (ParentClass1[, ParentClass2, ...]):
  • 對象對于屬性【包括變量和函數】的查找路徑:本實例對象--》本類--》基類【如果有多個基類,從左到右到基類中查找】
  • 可以調用基類的__init__方法:
    • 方式有兩種:Python面向對象程序設計之繼承、多態原理與用法詳解,建議使用super,避免錯誤使用多次基類的__init__
class SchoolPerson:
  def __init__(self,name,age,sex,mid):
    self.name=name
    self.age=age
    self.sex=sex
    self.mid=mid
  def study(self):
    print("it's time to study")

class Student(SchoolPerson):#繼承的方法
  def __init__(self,name,age,sex,mid,grade):
    # super(Student,self).__init__(name,age,sex,mid)
    SchoolPerson.__init__(self,name,age,sex,mid)
    self.grade=grade
  def study(self):
    print("i am student,i want to study")

a=Student('A',18,'m','001',1)
a.study()
print(a.name,a.age,a.mid,a.grade)
  • 對于多繼承中的調用基類的__init__:無論多少個基類,也只會調用一次基類的__init__

Python面向對象程序設計之繼承、多態原理與用法詳解Python面向對象程序設計之繼承、多態原理與用法詳解Python面向對象程序設計之繼承、多態原理與用法詳解

  • 可以覆蓋父類中屬性【變量、函數】:
class SchoolPerson:
  def __init__(self,name,age,sex,mid):
    self.name=name
    self.age=age
    self.sex=sex
    self.mid=mid
  def study(self):
    print("it's time to study")

class Student(SchoolPerson):#繼承的方法
  def __init__(self,name,age,sex,mid,grade):
    super(Student,self).__init__(name,age,sex,mid)
    self.grade=grade
  def study(self):
    print("i am student,i want to study")

a=Student('A',18,'m','001',1)
a.study()

--------------------------
結果:
i am student,i want to study

多態:

Python面向對象程序設計之繼承、多態原理與用法詳解

  • python是否具有多態具有爭議性。
  • 但不論是否具有,這并不影響我們的具體使用。
class Animal:
  def __init__(self, name): 
    self.name = name
  def talk(self): 
    pass 
  @staticmethod ####如果硬要說多態,建議使用靜態方法來處理,而非普通函數
  def animal_talk(obj):
    obj.talk()
class Cat(Animal):
  def talk(self):
    print('喵!')
class Dog(Animal):
  def talk(self):
    print('wang')

d = Dog("小黑")
c = Cat("小白")

# def animal_talk(obj):
#   obj.talk()  ###這也是一個能實現功能的函數,因此python多態才具有爭議性

Animal.animal_talk(c)
Animal.animal_talk(d)

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富锦市| 界首市| 花莲市| 色达县| 紫阳县| 宝山区| 搜索| 庆城县| 普宁市| 万荣县| 黑河市| 定襄县| 阿图什市| 赣州市| 临漳县| 渝北区| 恭城| 金山区| 长兴县| 广州市| 铁岭市| 孟州市| 姚安县| 新民市| 平泉县| 塔河县| 徐州市| 金门县| 南昌县| 苍溪县| 衡阳市| 岳阳市| 安阳县| 龙江县| 吉林省| 永仁县| 长乐市| 邻水| 平泉县| 廉江市| 江城|