中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python Class:面向對象高級編程 __getattr__

發布時間:2020-07-23 23:40:52 來源:網絡 閱讀:1831 作者:虎皮喵的喵 欄目:編程語言

官網解釋:

  • object.__getattr__(selfname)

  • Called when an attribute lookup has not found the attribute in the usual places (i.e. it is not an instance attribute nor is it found in the class tree for self). name is the attribute name. This method should return the (computed) attribute value or raise an AttributeError exception.


當我們想調用Class中某些東西,而Class中沒有,解釋器鐵定報錯,停止運行,那有人就想了:真麻煩,每次都要重新執行一遍,如果當我調用錯了內容,程序能把我這個錯誤當默認程序執行,而不停止我程序運行就好了。so,為了解決這類問題,就出來了__getattr__這個函數了。

我猜的,因為解決程序困難也是一種需求。 


看沒有__getattr的出錯調用:

#!/usr/bin/python

# -*- coding: utf-8 -*-


class Student(object):

    def __init__(self):

        self.name = 'Michael'


s = Student()

print s.name

print s.score      #Class中沒有這個屬性

python Class:面向對象高級編程 __getattr__

look, 第一個print正常執行,第二個由于Class中沒有這個屬性,所以就報錯了。


再看,帶__getattr__的Class:

#!/usr/bin/python

# -*- coding: utf-8 -*-


class Student(object):

    def __init__(self):

        self.name = 'Michael'


    def __getattr__(self, other):

        if other=='score':

            return 99

            

s = Student()

print s.name

python Class:面向對象高級編程 __getattr__

print s.score   #Class中沒有這個屬性

python Class:面向對象高級編程 __getattr__

print s.gg       #Class中沒有這個屬性

python Class:面向對象高級編程 __getattr__


look again, print 的score 和 gg 在Class中都沒有定義,但都有輸出。因為程序往__getattr__中找,剛剛好定義了一個字符判斷 if other=='score':, 所以輸出了99 ,而gg一個字都沒提,就默認輸出None了。是不是感覺以后碼程序的時候再也不用擔心程序停止運行了。



※發現的強大的鏈式調用寫法:

class Chain(object):

    def __init__(self, path=''):
        self._path = path
    def __getattr__(self, path):
        return Chain('%s/%s' % (self._path, path))   #調用自己
    def __str__(self):
        return self._path

    __repr__ = __str__
    
f = Chain()
print (f.www.anc.do.glob)

結果:

/www/anc/do/glob


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉源县| 乳山市| 习水县| 克什克腾旗| 凤城市| 沙河市| 遵化市| 威宁| 万荣县| 建昌县| 湘乡市| 鄂伦春自治旗| 榆树市| 施秉县| 怀仁县| 凤冈县| 兴和县| 武汉市| 玛曲县| 宜兴市| 若尔盖县| 汉沽区| 苏州市| 寿宁县| 革吉县| 丽江市| 贵州省| 盐津县| 团风县| 涟源市| 湘乡市| 苍山县| 淅川县| 德化县| 连江县| 汾西县| 华阴市| 扶余县| 大悟县| 仲巴县| 通州市|