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

Python的getattr函數(shù)方法學習使用示例

 更新時間:2022年08月09日 14:19:20   作者:waws520  
這篇文章主要為大家介紹了Python的getattr方法學習使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

__getattr__函數(shù)的作用: 如果屬性查找(attribute lookup)在實例以及對應的類中(通過__dict__)失敗, 那么會調用到類的__getattr__函數(shù);

如果沒有定義這個函數(shù),那么拋出AttributeError異常。由此可見,__getattr__一定是作用于屬性查找的最后一步

舉個栗子:

class A(object):
    def __init__(self, a, b):
        self.a1 = a
        self.b1 = b
        print('init')
    def mydefault(self, *args):
        print('default:' + str(args[0]))
    def __getattr__(self, name):
        print("other fn:", name)
        return self.mydefault
a1 = A(10, 20)
a1.fn1(33)
a1.fn2('hello')

運行結果:

init
other fn: fn1
default:33
other fn: fn2
default:hello

第16行調用fn1屬性時,查找不到次屬性,程序調用__getattr__方法

用__getattr__方法可以處理調用屬性異常

class Student(object):
    def __getattr__(self, attrname):
        if attrname == "age":
            return 'age:40'
        else:
            raise AttributeError(attrname)
x = Student()
print(x.age)  # 40
print(x.name)

這里定義一個Student類和實例x,并沒有屬性age,當執(zhí)行x.age,就調用_getattr_方法動態(tài)創(chuàng)建一個屬性,執(zhí)行x.name時,__getattr__方法沒有對其處理,拋出異常

age:40
  File "XXXX.py", line 10, in <module>
    print(x.name)
  File "XXXX.py", line 6, in __getattr__
    raise AttributeError(attrname)
AttributeError: name

下面展示一個_getattr_經(jīng)典應用的例子,可以調用dict的鍵值對

class ObjectDict(dict):
    def __init__(self, *args, **kwargs):
        super(ObjectDict, self).__init__(*args, **kwargs)
    def __getattr__(self, name):
        value = self[name]
        if isinstance(value, dict):
            value = ObjectDict(value)
        return value
if __name__ == '__main__':
    od = ObjectDict(asf = {'a': 1}, d = True)
    print(od.asf, od.asf.a)  # {'a': 1} 1
    print(od.d)  # True

以上就是Python的getattr方法學習使用示例的詳細內容,更多關于Python getattr方法的資料請關注腳本之家其它相關文章!

相關文章

  • flask項目集成swagger的方法

    flask項目集成swagger的方法

    這篇文章主要介紹了flask項目集成swagger的方法,幫助大家更好的理解和使用flask框架,感興趣的朋友可以了解下
    2020-12-12
  • PyQt5+serial模塊實現(xiàn)一個串口小工具

    PyQt5+serial模塊實現(xiàn)一個串口小工具

    這篇文章主要為大家詳細介紹了如何利用PyQt5和serial模塊實現(xiàn)一個簡單的串口小工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-01-01
  • 利用Python的Django框架中的ORM建立查詢API

    利用Python的Django框架中的ORM建立查詢API

    這篇文章主要介紹了利用Python的Django框架中的ORM建立查詢API,對Managers和QuerySets進行了著重介紹,需要的朋友可以參考下
    2015-04-04
  • Django 路由層URLconf的實現(xiàn)

    Django 路由層URLconf的實現(xiàn)

    這篇文章主要介紹了Django 路由層URLconf的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • python機器學習之神經(jīng)網(wǎng)絡(二)

    python機器學習之神經(jīng)網(wǎng)絡(二)

    這篇文章主要為大家詳細介紹了python機器學習之神經(jīng)網(wǎng)絡第二篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 圖文詳解Python如何導入自己編寫的py文件

    圖文詳解Python如何導入自己編寫的py文件

    有時候自己寫了一個py文件,想要把它導入到另一個py文件里面,所以下面這篇文章主要給大家介紹了關于Python如何導入自己編寫的py文件的相關資料,需要的朋友可以參考下
    2021-11-11
  • Python圖像處理庫PIL中圖像格式轉換的實現(xiàn)

    Python圖像處理庫PIL中圖像格式轉換的實現(xiàn)

    這篇文章主要介紹了Python圖像處理庫PIL中圖像格式轉換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Python編程中Python與GIL互斥鎖關系作用分析

    Python編程中Python與GIL互斥鎖關系作用分析

    GIL互斥鎖用來保護Python世界里的對象,防止同一時刻多個線程執(zhí)行Python字節(jié)碼,確保線程安全,但也導致Python線程無法利用多核CPU優(yōu)勢,本文來探討Python將來是否有可能去除GIL
    2021-09-09
  • Python繪制散點密度圖的三種方式詳解

    Python繪制散點密度圖的三種方式詳解

    散點密度圖是在散點圖的基礎上,計算了每個散點周圍分布了多少其他的點,并通過顏色表現(xiàn)出來。本文主要介紹了Python繪制散點密度圖的三種方式,需要的可以參考下
    2022-06-06
  • Python實現(xiàn)將Excel內容插入到Word模版中

    Python實現(xiàn)將Excel內容插入到Word模版中

    前段時間因為需要處理一大堆驗收單,都是一些簡單的復制粘貼替換工作,于是就想到用python進行處理。本文分享了用python將excel文件單元格內容插入到word模版中并保存為新文件的辦法,希望對大家有所幫助
    2023-03-03

最新評論

西青区| 平和县| 凤庆县| 天镇县| 青神县| 香河县| 乐陵市| 岳西县| 咸阳市| 井冈山市| 遂昌县| 紫阳县| 庐江县| 绿春县| 抚松县| 泰顺县| 高州市| 宽城| 同心县| 辽宁省| 吴江市| 乌兰浩特市| 清水河县| 洪湖市| 华蓥市| 临朐县| 特克斯县| 芦溪县| 衡阳县| 日喀则市| 二手房| 四川省| 五莲县| 桦南县| 太仓市| 柞水县| 繁昌县| 台中县| 金沙县| 建德市| 黄平县|