国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python __setattr__、 __getattr__、 __delattr__、__call__用法示例

2020-02-23 00:17:53
字體:
來源:轉載
供稿:網友

getattr

`getattr`函數屬于內建函數,可以通過函數名稱獲取
代碼如下:
value = obj.attribute
value = getattr(obj, "attribute")

使用`getattr`來實現工廠模式
代碼如下:
#一個模塊支持html、text、xml等格式的打印,根據傳入的formate參數的不同,調用不同的函數實現幾種格式的輸出

import statsout

def output(data, format="text"):                          
    output_function = getattr(statsout, "output_%s" %format)
    return output_function(data)

__call__

`__call__`方法用于實例自身的調用:
代碼如下:
class storage(dict):
    # __call__方法用于實例自身的調用
    #達到()調用的效果
    def __call__ (self, key):
         try:
             return self[key]
         except KeyError, k:
             return None

s = storage()
s['key'] = 'value'
print s(key) #調用__call__

__getattr__

從對象中讀取某個屬性時,首先需要從self.__dicts__中搜索該屬性,再從__getattr__中查找。

代碼如下:
class A(object): 
    def __init__(self): 
        self.name = 'from __dicts__: zdy' 
 
    def __getattr__(self, item): 
        if item == 'name': 
            return 'from __getattr__: zdy' 
        elif item == 'age': 
            return 26 
 
a = A() 
print a.name # 從__dict__里獲得的 
print a.age # 從__getattr__獲得的

__setattr__

`__setattr__`函數是用來設置對象的屬性,通過object中的__setattr__函數來設置屬性:
代碼如下:
class A(object):
    def __setattr__(self, *args, **kwargs): 
        print 'call func set attr' 
        return object.__setattr__(self, *args, **kwargs)

__delattr__

`__delattr__`函數式用來刪除對象的屬性:
代碼如下:
class A(object):
    def __delattr__(self, *args, **kwargs): 
        print 'call func del attr' 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 巴林右旗| 宁强县| 张家川| 平乐县| 奉新县| 清河县| 开封市| 松原市| 小金县| 石楼县| 海林市| 东阳市| 丰城市| 昌江| SHOW| 岑巩县| 乐业县| 曲麻莱县| 施秉县| 菏泽市| 彩票| 双辽市| 丽江市| 沅陵县| 哈巴河县| 广宁县| 武威市| 界首市| 盐源县| 福州市| 中阳县| 老河口市| 贺兰县| 什邡市| 大田县| 靖远县| 罗源县| 通榆县| 喀喇沁旗| 札达县|