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

小結(jié)Python的反射機(jī)制

 更新時(shí)間:2020年09月28日 10:12:18   作者:topass123  
這篇文章主要介紹了Python的反射機(jī)制,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

前言:

前兩天用Python實(shí)現(xiàn)了ftp服務(wù)器。在小項(xiàng)目中就用到了反射。因此寫個(gè)筆記鞏固下。

反射的定義:檢測(cè)和修改它本身狀態(tài)或行為的一種能力(自?。?。

而通過(guò)反射,Python可以通過(guò)字符串的映射或修改程序運(yùn)行的狀態(tài)和方法。

反射的四個(gè)方法。hasattr,getattr,setattr,delattr

hasattr:判斷一個(gè)方法是否存在與這個(gè)類中

class Person(object):
  def __init__(self,name):
    self.name = name
  def talk(self):
    print("%s正在交談"%self.name)

p = Person("laowang")    
print(hasattr(p,"talk"))  # True。因?yàn)榇嬖趖alk方法
print(hasattr(p,"name"))  # True。因?yàn)榇嬖趎ame變量
print(hasattr(p,"abc"))   # False。因?yàn)椴淮嬖赼bc方法或變量

getattr:根據(jù)字符串去獲取obj對(duì)象里的對(duì)應(yīng)的方法的內(nèi)存地址,加"()"括號(hào)即可執(zhí)行

class Person(object):
  def __init__(self,name):
    self.name = name
  def talk(self):
    print("%s正在交談"%self.name)
p = Person("laowang")

n = getattr(p,"name")  # 獲取name變量的內(nèi)存地址
print(n)        # 此時(shí)打印的是:laowang

f = getattr(p,"talk")  # 獲取talk方法的內(nèi)存地址
f()           # 調(diào)用talk方法

我們發(fā)現(xiàn)getattr有三個(gè)參數(shù),那么第三個(gè)參數(shù)是做什么用的呢?
s = getattr(p,"abc","not find")
print(s)        # 打印結(jié)果:not find。因?yàn)閍bc在對(duì)象p中找不到,本應(yīng)該報(bào)錯(cuò),但因?yàn)樾薷牧苏也坏骄洼敵鰊ot find

setattr:通過(guò)setattr將外部的一個(gè)函數(shù)綁定到實(shí)例中

def abc(self):
  print("%s正在交談"%self.name)

class Person(object):
  def __init__(self,name):
    self.name = name

p = Person("laowang")
setattr(p,"talk",abc)  # 將abc函數(shù)添加到對(duì)象中p中,并命名為talk
p.talk(p)        # 調(diào)用talk方法,因?yàn)檫@是額外添加的方法,需手動(dòng)傳入對(duì)象


setattr(p,"age",30)   # 添加一個(gè)變量age,復(fù)制為30
print(p.age)      # 打印結(jié)果:30

delattr:刪除一個(gè)實(shí)例或者類中的方法

class Person(object):
  def __init__(self,name):
    self.name = name
  def talk(self):
    print("%s正在交談"%self.name)

p = Person("laowang")

delattr(p,"name")    # 刪除name變量
print(p.name)      # 此時(shí)將報(bào)錯(cuò)

為什么用反射

好處一:

實(shí)現(xiàn)可插拔機(jī)制

可以事先定義好接口,接口只有在被完成后才會(huì)真正執(zhí)行,這實(shí)現(xiàn)了即插即用,這其實(shí)是一種‘后期綁定'

好處二:

動(dòng)態(tài)導(dǎo)入模塊(基于反射當(dāng)前模塊成員)

以上就是小結(jié)Python的反射機(jī)制的詳細(xì)內(nèi)容,更多關(guān)于python 反射的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)的web監(jiān)控系統(tǒng)

    python實(shí)現(xiàn)的web監(jiān)控系統(tǒng)

    這篇文章主要介紹了python實(shí)現(xiàn)的web監(jiān)控系統(tǒng),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • python輕量級(jí)orm框架 peewee常用功能速查詳情

    python輕量級(jí)orm框架 peewee常用功能速查詳情

    Peewee是一種簡(jiǎn)單而小的ORM。它有很少的(但富有表現(xiàn)力的)概念,使它易于學(xué)習(xí)和直觀的使用,感興趣的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Pandas數(shù)據(jù)連接pd.concat的實(shí)現(xiàn)

    Pandas數(shù)據(jù)連接pd.concat的實(shí)現(xiàn)

    本文主要介紹了Pandas數(shù)據(jù)連接pd.concat的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python中使用matplotlib模塊errorbar函數(shù)繪制誤差棒圖實(shí)例代碼

    Python中使用matplotlib模塊errorbar函數(shù)繪制誤差棒圖實(shí)例代碼

    在matplotlib中,errorbar方法用于繪制帶誤差線的折線圖,下面這篇文章主要給大家介紹了關(guān)于Python中使用matplotlib模塊errorbar函數(shù)繪制誤差棒圖的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 解決遇到:PytorchStreamReader failed reading zip archive:failed finding central錯(cuò)誤問(wèn)題

    解決遇到:PytorchStreamReader failed reading zip&n

    本文針對(duì)"PytorchStreamReaderfailedreadingziparchive:failedfindingcentral"錯(cuò)誤提出解決方案,包括檢查文件完整性、文件路徑,嘗試更新PyTorch版本,檢查壓縮文件格式,代碼問(wèn)題,或?qū)で蠹夹g(shù)支持等,希望這些經(jīng)驗(yàn)?zāi)芙o遇到同樣問(wèn)題的人一個(gè)參考
    2024-09-09
  • python深度學(xué)習(xí)借助多標(biāo)簽分類器進(jìn)行對(duì)抗訓(xùn)練

    python深度學(xué)習(xí)借助多標(biāo)簽分類器進(jìn)行對(duì)抗訓(xùn)練

    這篇文章主要為大家介紹了python深度學(xué)習(xí)中如何借助多標(biāo)簽分類器進(jìn)行對(duì)抗訓(xùn)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-01-01
  • python批量壓縮圖像的完整步驟

    python批量壓縮圖像的完整步驟

    本文分享的內(nèi)容來(lái)源于一次做項(xiàng)目的經(jīng)驗(yàn),也就是從那之后才體會(huì)到了python強(qiáng)大的文件批處理能力,這篇文章主要給大家介紹了關(guān)于python批量壓縮圖像的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • python批量復(fù)制圖片到另一個(gè)文件夾

    python批量復(fù)制圖片到另一個(gè)文件夾

    這篇文章主要為大家詳細(xì)介紹了python批量復(fù)制圖片到另一個(gè)文件夾,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python接收/發(fā)送QQ郵箱保姆級(jí)教程

    python接收/發(fā)送QQ郵箱保姆級(jí)教程

    我們?cè)谌粘ython開發(fā)過(guò)程中,需求中常有實(shí)現(xiàn)發(fā)送郵箱的功能,可以說(shuō)是非常常見,也非常重要的功能,下面這篇文章主要給大家介紹了關(guān)于python接收/發(fā)送QQ郵箱保姆級(jí)教程的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Python 使用 Pillow 模塊給圖片添加文字水印的方法

    Python 使用 Pillow 模塊給圖片添加文字水印的方法

    這篇文章主要介紹了Python 使用 Pillow 模塊給圖片添加文字水印的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

台东县| 大宁县| 南京市| 荣昌县| 绿春县| 宁远县| 广水市| 卫辉市| 高雄县| 澄城县| 仁化县| 佛冈县| 尤溪县| 肃宁县| 吴旗县| 商河县| 南昌县| 镇宁| 青川县| 夏邑县| SHOW| 当雄县| 祁门县| 丽江市| 自贡市| 绥棱县| 娄底市| 延边| 城口县| 阜平县| 长乐市| 金昌市| 嘉荫县| 蒙阴县| 普安县| 东海县| 江门市| 石屏县| 碌曲县| 任丘市| 普陀区|