最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

繼承

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

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

寫兩個(gè)子類,Cat和Dog類,繼承自Animal類,聲明方法是在定義子類的時(shí)候在子類的括號(hào)內(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)用!")

兩個(gè)子類中并沒有聲明任何方法,但是會(huì)自動(dòng)繼承父類中的eat方法:

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

聲明兩個(gè)對(duì)象,調(diào)用eat方法,運(yùn)行輸出:

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

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

多態(tài)

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

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

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()

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

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

多態(tài)意味著一個(gè)接口,多種實(shí)現(xiàn),另一個(gè)可以體現(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)

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

運(yùn)行輸出:

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

獲取對(duì)象信息

hasattr(object , 'name')

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

getattr( object, 'name')

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

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

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)

運(yùn)行輸出:

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

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

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

相關(guān)文章

  • 使用Python實(shí)現(xiàn)批量分割PDF文件

    使用Python實(shí)現(xiàn)批量分割PDF文件

    這篇文章主要為大家詳細(xì)介紹了如何使用Python進(jìn)行批量分割PDF文件功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • 詳解如何使用python打印出多樣字符

    詳解如何使用python打印出多樣字符

    當(dāng)你第一次進(jìn)入Python的世界里,學(xué)到的第一句代碼是不是print("Hello?World"),今天,讓我們一起來開啟探索print()的奇妙之旅,從最基礎(chǔ)的打印字符用法到讓它跳舞唱歌——?jiǎng)討B(tài)顯示,讓我們一步步解鎖print()的各種技能吧,需要的朋友可以參考下
    2024-03-03
  • Python入門教程之運(yùn)算符重載詳解

    Python入門教程之運(yùn)算符重載詳解

    運(yùn)算符重載意味著賦予超出其預(yù)定義的操作含義的擴(kuò)展含義。例如運(yùn)算符 + 用于添加兩個(gè)整數(shù)以及連接兩個(gè)字符串和合并兩個(gè)列表。本文將通過示例帶大家詳細(xì)了解Python的運(yùn)算符重載,感興趣的可以了解一下
    2022-09-09
  • python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解

    python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解

    今天小編就為大家分享一篇python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法

    淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法

    這篇文章主要介紹了淺談keras中的目標(biāo)函數(shù)和優(yōu)化函數(shù)MSE用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • django 自定義過濾器的實(shí)現(xiàn)

    django 自定義過濾器的實(shí)現(xiàn)

    這篇文章主要介紹了django 自定義過濾器的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • wxpython中自定義事件的實(shí)現(xiàn)與使用方法分析

    wxpython中自定義事件的實(shí)現(xiàn)與使用方法分析

    這篇文章主要介紹了wxpython中自定義事件的實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式詳細(xì)分析了wxpython中自定義事件的創(chuàng)建步驟與使用方法,需要的朋友可以參考下
    2016-07-07
  • pandas dataframe的合并實(shí)現(xiàn)(append, merge, concat)

    pandas dataframe的合并實(shí)現(xiàn)(append, merge, concat)

    這篇文章主要介紹了pandas dataframe的合并實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python操作excel讓工作自動(dòng)化

    python操作excel讓工作自動(dòng)化

    這篇文章主要為大家詳細(xì)介紹了python如何操作excel讓工作自動(dòng)化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Ubuntu16.04安裝python3.6.5步驟詳解

    Ubuntu16.04安裝python3.6.5步驟詳解

    這篇文章主要介紹了Ubuntu16.04安裝python3.6.5詳細(xì)步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

海林市| 义马市| 唐河县| 留坝县| 孟村| 嘉峪关市| 泰安市| 西华县| 龙川县| 唐河县| 乌拉特中旗| 玉门市| 炉霍县| 黄山市| 赞皇县| 施甸县| 出国| 双桥区| 万载县| 丰宁| 中山市| 侯马市| 昆明市| 榆树市| 上思县| 饶平县| 凤山市| 萨嘎县| 石台县| 武乡县| 柘城县| 通榆县| 措勤县| 承德县| 安义县| 金昌市| 阜阳市| 金川县| 尉犁县| 蕲春县| 南宫市|