亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

正文

__getattr__函數(shù)的作用: 如果屬性查找(attribute lookup)在實(shí)例以及對(duì)應(yīng)的類(lèi)中(通過(guò)__dict__)失敗, 那么會(huì)調(diào)用到類(lèi)的__getattr__函數(shù);

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

舉個(gè)栗子:

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

運(yùn)行結(jié)果:

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

第16行調(diào)用fn1屬性時(shí),查找不到次屬性,程序調(diào)用__getattr__方法

用__getattr__方法可以處理調(diào)用屬性異常

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)

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

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

下面展示一個(gè)_getattr_經(jīng)典應(yīng)用的例子,可以調(diào)用dict的鍵值對(duì)

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方法學(xué)習(xí)使用示例的詳細(xì)內(nèi)容,更多關(guān)于Python getattr方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Python如何循環(huán)遍歷Numpy中的Array

    詳解Python如何循環(huán)遍歷Numpy中的Array

    Numpy是Python中常見(jiàn)的數(shù)據(jù)處理庫(kù),是數(shù)據(jù)科學(xué)中經(jīng)常使用的庫(kù)。在本文中,我們將學(xué)習(xí)如何迭代遍歷訪問(wèn)矩陣中的元素,需要的可以參考一下
    2022-04-04
  • PyCharm代碼回滾,恢復(fù)歷史版本的解決方法

    PyCharm代碼回滾,恢復(fù)歷史版本的解決方法

    今天小編就為大家分享一篇PyCharm代碼回滾,恢復(fù)歷史版本的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python常用庫(kù)大全及簡(jiǎn)要說(shuō)明

    Python常用庫(kù)大全及簡(jiǎn)要說(shuō)明

    本文為大家羅列了Python開(kāi)發(fā)的常用庫(kù)和各個(gè)庫(kù)的簡(jiǎn)要說(shuō)明以及Python開(kāi)發(fā)工具,包管理,環(huán)境管理等其它常用資源和Python學(xué)習(xí)資料
    2020-01-01
  • python3里gbk編碼的問(wèn)題解決

    python3里gbk編碼的問(wèn)題解決

    本文主要介紹了python3里gbk編碼的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 在pyCharm中下載第三方庫(kù)的方法

    在pyCharm中下載第三方庫(kù)的方法

    這篇文章主要介紹了在pyCharm中下載第三方庫(kù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Pandas的DataFrame如何做交集,并集,差集與對(duì)稱(chēng)差集

    Pandas的DataFrame如何做交集,并集,差集與對(duì)稱(chēng)差集

    這篇文章主要介紹了Pandas的DataFrame如何做交集,并集,差集與對(duì)稱(chēng)差集,Python的數(shù)據(jù)類(lèi)型集合由不同元素組成的集合,集合中是一組無(wú)序排列的可?Hash?的值,可以作為字典的Key,下面來(lái)看看文章的詳細(xì)內(nèi)容吧
    2022-01-01
  • 開(kāi)始著手第一個(gè)Django項(xiàng)目

    開(kāi)始著手第一個(gè)Django項(xiàng)目

    這篇文章主要介紹了開(kāi)始著手第一個(gè)Django項(xiàng)目的過(guò)程,Django是豐富多彩的Python框架中人氣最高的一個(gè),功能多而全,需要的朋友可以參考下
    2015-07-07
  • 兒童編程python入門(mén)

    兒童編程python入門(mén)

    很多家長(zhǎng)都想讓孩子學(xué)習(xí)編程,今天我們給大家分享一下關(guān)于兒童python的入門(mén)以及簡(jiǎn)單的代碼,有興趣的朋友閱讀下吧。
    2018-05-05
  • python:刪除離群值操作(每一行為一類(lèi)數(shù)據(jù))

    python:刪除離群值操作(每一行為一類(lèi)數(shù)據(jù))

    這篇文章主要介紹了python:刪除離群值操作(每一行為一類(lèi)數(shù)據(jù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 基于Python socket實(shí)現(xiàn)簡(jiǎn)易網(wǎng)絡(luò)聊天室

    基于Python socket實(shí)現(xiàn)簡(jiǎn)易網(wǎng)絡(luò)聊天室

    本文主要介紹了基于Python socket實(shí)現(xiàn)簡(jiǎn)易網(wǎng)絡(luò)聊天室,本文將通過(guò)pyqt5作為桌面應(yīng)用框架,socket作為網(wǎng)絡(luò)編程的框架,從而實(shí)現(xiàn)包括客戶(hù)端和服務(wù)端的網(wǎng)絡(luò)聊天室的GUI應(yīng)用,需要的可以參考一下
    2022-07-07

最新評(píng)論