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

首頁 > 編程 > Python > 正文

Python類的繼承、多態及獲取對象信息操作詳解

2020-02-16 01:25:14
字體:
來源:轉載
供稿:網友

本文實例講述了Python類的繼承、多態及獲取對象信息操作。分享給大家供大家參考,具體如下:

繼承

類的繼承機制使得子類可以繼承父類中定義的方法,擁有父類的財產,比如有一個Animal的類作為父類,它有一個eat方法:

class Animal(object):  def __init__(self):    print("Animal 構造函數調用!")  def eat(self):    print("Animal is eatting!")

寫兩個子類,Cat和Dog類,繼承自Animal類,聲明方法是在定義子類的時候在子類的括號內寫上父類Animal:

class Animal(object):  def __init__(self):    print("Animal 構造函數調用!")  def eat(self):    print("Animal is eatting!")class Cat(Animal):  def __init__(self):    print("Cat 構造函數調用!")class Dog(Animal):  def __init__(self,age):    self.age=age    print("Dog 構造函數調用!")

兩個子類中并沒有聲明任何方法,但是會自動繼承父類中的eat方法:

cat=Cat()dog=Dog(3)cat.eat()dog.eat()

聲明兩個對象,調用eat方法,運行輸出:

Cat 構造函數調用!
Dog 構造函數調用!
Animal is eatting!
Animal is eatting!

一般把一些共有的方法定義在基類中,其他繼承自該基類的子類就可以自動擁有這個方法。

多態

在繼承的基礎上,就引入了類的另外一個重要的特性——多態。

考慮一個問題,子類可以繼承父類的方法,那子類是否可以實現自己的這個方法呢,答案是可以的。

class Animal(object):  def __init__(self):    print("Animal 構造函數調用!")  def eat(self):    print("Animal is eatting!")class Cat(Animal):  def __init__(self):    print("Cat 構造函數調用!")  def eat(self):    print("Cat is eatting!")class Dog(Animal):  def __init__(self,age):    self.age=age    print("Dog 構造函數調用!")  def eat(self):    print("年齡是"+str(self.age)+"歲的Dog is eatting!")cat =Cat()cat.eat()dog=Dog(3)dog.eat()

子類如果也定義了自己的實現,就會優先調用自己的實現,上邊cat和dog調用eat方法就分別是自己的實現,運行輸出:

Cat 構造函數調用!
Cat is eatting!
Dog 構造函數調用!
年齡是3歲的Dog is eatting!

多態意味著一個接口,多種實現,另一個可以體現類的多態這種特性的例子:

def eat(animal):  if hasattr(animal,'eat'):    animal.eat()  if hasattr(animal,'age'):    a=getattr(animal,'age')    print('animal的年齡是'+str(a)+'歲')eat(dog)

這里定義了一個普通函數eat,函數的入參是類的對象,具體實現是調用傳入的對象的eat方法,傳入不同的對象,就有不同的輸出,調用的時候只要調用這個接口就可以了,而不用管具體的細節。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 四子王旗| 云和县| 余姚市| 芜湖县| 鄱阳县| 象山县| 榕江县| 慈溪市| 边坝县| 巴彦县| 增城市| 湾仔区| 宁化县| 专栏| 阳高县| 昌图县| 海林市| 霞浦县| 阿克苏市| 凤翔县| 剑阁县| 青浦区| 广河县| 衡东县| 衡南县| 德昌县| 叶城县| 太仓市| 樟树市| 怀集县| 南漳县| 大关县| 五原县| 法库县| 诏安县| 辽阳市| 淅川县| 溧水县| 天台县| 荔浦县| 台北市|