python四个魔法方法__len__,__getitem__,__setitem__,__delitem__
2013-07-13 21:32
701 查看
python中除了可以使用内建的类型,如list,tuple,dict,还可以创建自己的对象来实现像这些内建类型的访问,不过需要在定义类的时候对一些魔法方法逐一实现。
如下:
上面的对象就相当于自己创建了一个内建类型相似的字典,当实例中有类似字典的操作的时候
比如:
实例dictDemo["key0"]就类似上面的的操作,则会自动调用类中定义的方法__getitem__,输出在该方法返回的值
再看看dictDemo["key1"] = "value1",就是字典的操作,会自动调用类中定义的方法__setitem__,来设置相应的值
还有一个__del__,就是当我们要删除一个元素的时候调用(魔法方法会自动调用)
__len__ 如下:
当要使用内建函数len(),而参数是DictDemo的实例的时候,那一定要实现类型中的__len__()方法
class DictDemo:
def __init__(self,key,value):
self.dict = {}
self.dict[key] = value
def __getitem__(self,key):
return self.dict[key]
def __setitem__(self,key,value):
self.dict[key] = value
def __len__(self):
return len(self.dict)
dictDemo = DictDemo('key0','value0')
print(dictDemo['key0']) #value0
dictDemo['key1'] = 'value1'
print(dictDemo['key1']) #value1
print(len(dictDemo)) #2
上述就是这四个魔法方法的简单介绍。endingPos +……+#
如下:
class DictDemo: def __init__(self,key,value): self.dict = {} self.dict[key] = value def __getitem__(self,key): return self.dict[key] def __setitem__(self,key,value): self.dict[key] = value dictDemo = DictDemo('key0','value0') print(dictDemo['key0']) #value0 dictDemo['key1'] = 'value1' print(dictDemo['key1']) #value1
上面的对象就相当于自己创建了一个内建类型相似的字典,当实例中有类似字典的操作的时候
比如:
dictDemo1 = {"key0":"value0"} print(dictDemo1["key0"]) #value0
实例dictDemo["key0"]就类似上面的的操作,则会自动调用类中定义的方法__getitem__,输出在该方法返回的值
再看看dictDemo["key1"] = "value1",就是字典的操作,会自动调用类中定义的方法__setitem__,来设置相应的值
还有一个__del__,就是当我们要删除一个元素的时候调用(魔法方法会自动调用)
__len__ 如下:
当要使用内建函数len(),而参数是DictDemo的实例的时候,那一定要实现类型中的__len__()方法
class DictDemo:
def __init__(self,key,value):
self.dict = {}
self.dict[key] = value
def __getitem__(self,key):
return self.dict[key]
def __setitem__(self,key,value):
self.dict[key] = value
def __len__(self):
return len(self.dict)
dictDemo = DictDemo('key0','value0')
print(dictDemo['key0']) #value0
dictDemo['key1'] = 'value1'
print(dictDemo['key1']) #value1
print(len(dictDemo)) #2
上述就是这四个魔法方法的简单介绍。endingPos +……+#
相关文章推荐
- python 魔法方法之:__getitem__ __setitem__ __delitem__ __len__
- python 魔术方法:__getitem__、__setitem__、__delitem__、__len__
- Python的魔法函数之 - __len__,__getitem__,__setitem__,__delitem__
- 详解Python魔术方法__getitem__、__setitem__、__delitem__、__len__
- python 魔法方法之:__getitem__ __setitem__ __delitem__
- 用python 实现链表(实现__getitem__,__set__,__len__ 魔法方法)
- Python类,特殊方法, __getitem__,__len__, __delitem__
- Python类,特殊方法, __getitem__,__len__, __delitem__
- 8.python之面相对象part.7(__setitem__,__getitem,__delitem__)
- python中__getitem__, __setitem__, __delitem__的使用
- 浅谈Python类的__getitem__和__setitem__特殊方法
- Python类的__getitem__和__setitem__特殊方法
- Python中的__getitem__和__setitem__特殊方法
- Python类的__getitem__和__setitem__特殊方法
- Python类的__getitem__和__setitem__特殊方法
- python中__getitem__, __setitem__, __delitem__的使用
- python基础----__setitem__,__getitem,__delitem__
- Python __setitem__()、__getitem__()、__delitem__() (十一)
- Python类的__getitem__和__setitem__特殊方法
- Python 使用__getitem__ __setitem__ __delitem__ 创建自己的映射类型