python __setitem__(self)和__getitem__(self)

来源:互联网 发布:如何选择净水器 知乎 编辑:程序博客网 时间:2024/06/14 23:04

Python中除了可以使用内建的类型,如list,tuple,dict,还可以创建自己的对象来实现像这些内建类型的访问,不过需要在定义类的时候对一些魔法方法逐一实现。

如下:

[python] view plain copy
 print?
  1. class DictDemo:  
  2.       def __init__(self,key,value):  
  3.             self.dict = {}  
  4.             self.dict[key] = value  
  5.       def __getitem__(self,key):  
  6.             return self.dict[key]  
  7.       def __setitem__(self,key,value):  
  8.             self.dict[key] = value  
  9. dictDemo = DictDemo('key0','value0')  
  10. print(dictDemo['key0']) #value0  
  11. dictDemo['key1'] = 'value1'  
  12. print(dictDemo['key1']) #value1  

上面的对象就相当于自己创建了一个内建类型相似的字典,当实例中有类似字典的操作的时候

比如:

[python] view plain copy
 print?
  1. dictDemo1 = {"key0":"value0"}  
  2. print(dictDemo1["key0"]) #value0  

实例dictDemo["key0"]就类似上面的的操作,则会自动调用类中定义的方法__getitem__,输出在该方法返回的值

再看看dictDemo["key1"] = "value1",就是字典的操作,会自动调用类中定义的方法__setitem__,来设置相应的值

还有一个__del__,就是当我们要删除一个元素的时候调用(魔法方法会自动调用).

原创粉丝点击