item系列

 1 class Foo:
 2     def __getitem__(self, item):
 3         print('-------->__getitem__')
 4         return self.__dict__[item]
 5     def __setitem__(self, key, value):
 6         print('-------->__setitem__')
 7         self.__dict__[key] = value
 8     def __delitem__(self, key):
 9         print('-------->__delitem__')
10         self.__dict__.pop(key)
11 
12 f1 = Foo()
13 f1.name = 'stt'     #f1.name 用点的方法只会触发__xxxattr__的属性,要出发item需要用a["b"]的方式
14 print(f1.__dict__)  #{'name': 'stt'}
15 
16 # print(f1['name'])              #-------->__getitem__
17 ## setitem
18 print(f1.__dict__)    #{}
19 f1['name'] = 'stt'    #-------->__setitem__记得[""]里加引号
20 print(f1.__dict__)    #{'name': 'stt'}
21 ## getitem
22 f1['name']            #-------->__getitem__
23 print(f1['name'])   #-------->__getitem__  \n   stt
24 ## delitem
25 print(f1.__dict__)     #{'name': 'stt'}
26 del f1['name']         #-------->__delitem__
27 print(f1.__dict__)     #{}

猜你喜欢

转载自www.cnblogs.com/humanskin/p/9149690.html