国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python類的繼承和多態代碼詳解

2020-02-16 11:21:04
字體:
來源:轉載
供稿:網友

Python類的繼承

在OOP(ObjectOrientedProgramming)程序設計中,當我們定義一個class的時候,可以從某個現有的class繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Baseclass、Superclass)。

我們先來定義一個classPerson,表示人,定義屬性變量name及sex(姓名和性別);

定義一個方法print_title():當sex是male時,printman;當sex是female時,printwoman。參考如下代碼:

class Person(object):  def __init__(self,name,sex):    self.name = name    self.sex = sex      def print_title(self):    if self.sex == "male":      print("man")    elif self.sex == "female":      print("woman")class Child(Person):              # Child 繼承 Person  pass      May = Child("May","female")Peter = Person("Peter","male")print(May.name,May.sex,Peter.name,Peter.sex)  # 子類繼承父類方法及屬性May.print_title()Peter.print_title()

而我們編寫Child類,完全可以繼承Person類(Child就是Person);使用classsubclass_name(baseclass_name)來表示繼承;

繼承有什么好處?最大的好處是子類獲得了父類的全部屬性及功能。如下Child類就可以直接使用父類的print_title()方法

實例化Child的時候,子類繼承了父類的構造函數,就需要提供父類Person要求的兩個屬性變量name及sex:

在繼承關系中,如果一個實例的數據類型是某個子類,那它也可以被看做是父類(May既是Child又是Person)。但是,反過來就不行(Peter僅是Person,而不是Child)。

繼承還可以一級一級地繼承下來,就好比從爺爺到爸爸、再到兒子這樣的關系。而任何類,最終都可以追溯到根類object,這些繼承關系看上去就像一顆倒著的樹。比如如下的繼承樹:

isinstance()及issubclass()

Python與其他語言不同點在于,當我們定義一個class的時候,我們實際上就定義了一種數據類型。我們定義的數據類型和Python自帶的數據類型,比如str、list、dict沒什么兩樣。

Python有兩個判斷繼承的函數:isinstance()用于檢查實例類型;issubclass()用于檢查類繼承。參見下方示例:

class Person(object):  passclass Child(Person):         # Child 繼承 Person  passMay = Child()Peter = Person()  print(isinstance(May,Child))     # Trueprint(isinstance(May,Person))    # Trueprint(isinstance(Peter,Child))    # Falseprint(isinstance(Peter,Person))   # Trueprint(issubclass(Child,Person))   # True

Python類的多態

在說明多態是什么之前,我們在Child類中重寫print_title()方法:若為male,printboy;若為female,printgirl

class Person(object):  def __init__(self,name,sex):    self.name = name    self.sex = sex      def print_title(self):    if self.sex == "male":      print("man")    elif self.sex == "female":      print("woman")class Child(Person):        # Child 繼承 Person  def print_title(self):    if self.sex == "male":      print("boy")    elif self.sex == "female":      print("girl")    May = Child("May","female")Peter = Person("Peter","male")print(May.name,May.sex,Peter.name,Peter.sex)May.print_title()Peter.print_title()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南部县| 永清县| 三穗县| 邓州市| 蚌埠市| 杂多县| 陵川县| 米泉市| 万源市| 沙雅县| 连城县| 利津县| 汨罗市| 嘉义市| 泽库县| 鸡东县| 犍为县| 呈贡县| 遂昌县| 张家界市| 舒兰市| 大余县| 金乡县| 花莲市| 柯坪县| 织金县| 喀什市| 竹山县| 项城市| 霞浦县| 称多县| 苏州市| 巧家县| 白城市| 怀柔区| 灵璧县| 绥化市| 嘉义市| 晋宁县| 法库县| 体育|