欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python類的繼承、多態(tài)及獲取對象信息操作詳解

 更新時間:2019年02月28日 11:40:30   作者:-牧野-  
這篇文章主要介紹了Python類的繼承、多態(tài)及獲取對象信息操作,結(jié)合實例形式較為詳細的分析了Python面向?qū)ο蟪绦蛟O(shè)計中類、繼承、多態(tài)等相關(guān)操作技巧與注意事項,需要的朋友可以參考下

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

繼承

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

class Animal(object):
  def __init__(self):
    print("Animal 構(gòu)造函數(shù)調(diào)用!")
  def eat(self):
    print("Animal is eatting!")

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

class Animal(object):
  def __init__(self):
    print("Animal 構(gòu)造函數(shù)調(diào)用!")
  def eat(self):
    print("Animal is eatting!")
class Cat(Animal):
  def __init__(self):
    print("Cat 構(gòu)造函數(shù)調(diào)用!")
class Dog(Animal):
  def __init__(self,age):
    self.age=age
    print("Dog 構(gòu)造函數(shù)調(diào)用!")

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

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

聲明兩個對象,調(diào)用eat方法,運行輸出:

Cat 構(gòu)造函數(shù)調(diào)用!
Dog 構(gòu)造函數(shù)調(diào)用!
Animal is eatting!
Animal is eatting!

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

多態(tài)

在繼承的基礎(chǔ)上,就引入了類的另外一個重要的特性——多態(tài)。

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

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

子類如果也定義了自己的實現(xiàn),就會優(yōu)先調(diào)用自己的實現(xiàn),上邊cat和dog調(diào)用eat方法就分別是自己的實現(xiàn),運行輸出:

Cat 構(gòu)造函數(shù)調(diào)用!
Cat is eatting!
Dog 構(gòu)造函數(shù)調(diào)用!
年齡是3歲的Dog is eatting!

多態(tài)意味著一個接口,多種實現(xiàn),另一個可以體現(xiàn)類的多態(tài)這種特性的例子:

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

這里定義了一個普通函數(shù)eat,函數(shù)的入?yún)⑹穷惖膶ο?,具體實現(xiàn)是調(diào)用傳入的對象的eat方法,傳入不同的對象,就有不同的輸出,調(diào)用的時候只要調(diào)用這個接口就可以了,而不用管具體的細節(jié)。

運行輸出:

年齡是3歲的Dog is eatting!
animal的年齡是3歲

獲取對象信息

hasattr(object , 'name')

說明:判斷對象object是否包含名為name的屬性或方法,如果有則返回True,沒有則返回False

getattr( object, 'name')

說明:獲取對象object中名稱為name的屬性,返回name的值。

對類中方法的調(diào)用,可以先用hasattr判斷是否存在該方法,然后再調(diào)用這個方法,避免異常:

class Animal(object):
  def __init__(self):
    print("Animal 構(gòu)造函數(shù)調(diào)用!")
  def eat(self):
    print("Animal is eatting!")
def eat(animal):
  if hasattr(animal,'eat'):
    animal.eat()
  if hasattr(animal,'age'):
    a=getattr(animal,'age')
    print('animal的年齡是'+str(a)+'歲')
  if hasattr(animal, 'sleep'):
    animal.sleep()
  else:
    print('animal類中不含有sleep方法!')
animal=Animal()
eat(animal)

運行輸出:

Animal 構(gòu)造函數(shù)調(diào)用!
Animal is eatting!
animal類中不含有sleep方法!

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計入門與進階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進階經(jīng)典教程

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

相關(guān)文章

  • Python實現(xiàn)擴展內(nèi)置類型的方法分析

    Python實現(xiàn)擴展內(nèi)置類型的方法分析

    這篇文章主要介紹了Python實現(xiàn)擴展內(nèi)置類型的方法,結(jié)合實例形式分析了Python嵌入內(nèi)置類型擴展及子類方式擴展的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-10-10
  • Python數(shù)據(jù)分析之Excel和Text文件的讀寫操作方法

    Python數(shù)據(jù)分析之Excel和Text文件的讀寫操作方法

    Python操作Excel分為兩個主要形式,讀寫和交互式操作,可以用不同的第三方工具,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)分析之Excel和Text文件的讀寫操作方法,需要的朋友可以參考下
    2024-08-08
  • python爬蟲之urllib庫常用方法用法總結(jié)大全

    python爬蟲之urllib庫常用方法用法總結(jié)大全

    urllib是python自帶的請求庫,各種功能相比較之下也是比較完備的,下面這篇文章主要給大家介紹了關(guān)于python爬蟲之urllib庫常用方法用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-11-11
  • python的slice notation的特殊用法詳解

    python的slice notation的特殊用法詳解

    今天小編就為大家分享一篇python的slice notation的特殊用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 用Python給文本創(chuàng)立向量空間模型的教程

    用Python給文本創(chuàng)立向量空間模型的教程

    這篇文章主要介紹了用Python給文本創(chuàng)立向量空間模型的教程,比如文中舉例將文本中的詞頻轉(zhuǎn)為量化的矩陣,需要的朋友可以參考下
    2015-04-04
  • tensorflow: variable的值與variable.read_value()的值區(qū)別詳解

    tensorflow: variable的值與variable.read_value()的值區(qū)別詳解

    今天小編就為大家分享一篇tensorflow: variable的值與variable.read_value()的值區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python super的使用方法及實例詳解

    python super的使用方法及實例詳解

    這篇文章主要介紹了python super的使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 關(guān)于Python中的編碼規(guī)范

    關(guān)于Python中的編碼規(guī)范

    這篇文章主要介紹了關(guān)于Python中的編碼規(guī)范,一千個程序員有一千套編碼規(guī)范,統(tǒng)一的編碼規(guī)范可以提高開發(fā)效率,需要的朋友可以參考下
    2023-04-04
  • Python 畫出來六維圖

    Python 畫出來六維圖

    這篇文章主要介紹了Python 畫出來六維圖,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python爬蟲反爬之圖片驗證功能實現(xiàn)

    python爬蟲反爬之圖片驗證功能實現(xiàn)

    這篇文章主要介紹了python爬蟲反爬之圖片驗證功能實現(xiàn),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03

最新評論