Python __setitem__()、__getitem__()、__delitem__() (十一)

来源:互联网 发布:苹果6手机数据恢复 编辑:程序博客网 时间:2024/06/06 19:38

__xxxitem__:使用 [''] 的方式操作属性时被调用

__setitem__:每当属性被赋值的时候都会调用该方法,因此不能再该方法内赋值 self.name = value 会死循环

__getitem__:当访问不存在的属性时会调用该方法

__delitem__:当删除属性时调用该方法

class A(object):    def __init__(self):        self['B'] = "BB"        self['D'] = "DD"        del self['D']        def __setitem__(self,name,value):        '''        @summary: 每当属性被赋值的时候都会调用该方法,因此不能再该方法内赋值 self.name = value 会死循环        '''        print "__setitem__:Set %s Value %s"%(name,value)        self.__dict__[name] = value        def __getitem__(self,name):        '''         @summary: 当访问不存在的属性时会调用该方法        '''        print "__getitem__:No attribute named '%s'"%name        return None        def __delitem__(self,name):        '''         @summary: 当删除属性时调用该方法        '''        print "__delitem__:Delect attribute '%s'"%name        del self.__dict__[name]        print self.__dict__        if __name__ == "__main__":    X = A()    b = X['bb']
输出:
__setitem__:Set B Value BB__setitem__:Set D Value DD__delitem__:Delect attribute 'D'{'B': 'BB'}__getitem__:No attribute named 'bb'



0 0
原创粉丝点击