【1.126】类的内置函数setitem getitem delitem
内置函数__setitem__ __getitem__ __delitem__ 是对字典方式访问
如: f1["key"]
内置函数__setattr__ __getattr__ __delattr__ 是对 . 的方式访问
如: f1.key
class Foo: def __init__(self,name): self.name = name def __setitem__(self, key, value): print("执行setitem") self.__dict__[key]=value def __getitem__(self, item): print("执行getitem") print(self.__dict__[item]) #也可以直接 return # return self.__dict__[item] def __delitem__(self, key): print("执行delitem") del self.__dict__[key]
#可以 这样写
# sel.__dict__.pop(key)
# 但是不能
#del self[key] 这样就递归循环了
# 在delattr 里面 也不能写
#del self.key 也会递归循环 但是在delitem 中这样写它会说找不到这个key
f1 = Foo("alex") print (f1.__dict__) #{'name': 'alex'} f1.age = 18 print (f1.__dict__) # {'name': 'alex', 'age': 18} f1["gender"] ="male" print (f1.__dict__) # 执行setitem # {'name': 'alex', 'age': 18, 'gender': 'male'} f1["age"] # 执行getitem # 18 del f1["gender"] print (f1.__dict__) # 执行delitem # {'name': 'alex', 'age': 18}
浙公网安备 33010602011771号