您的位置:首页 > 编程语言 > Python开发

Python __setitem__()、__getitem__()、__delitem__()

2018-07-25 14:00 387 查看

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

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

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

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

[code]lass 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']

输出:

[code]__setitem__:Set B Value BB
__setitem__:Set D Value DD
__delitem__:Delect attribute 'D'
{'B': 'BB'}
__getitem__:No attribute named 'bb'

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: