class Foo:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex= sex
def __getitem__(self, item):
if hasattr(self,item):
return self.__dict__[item]
def __setitem__(self, key, value):
self.__dict__[key] = value
def __delitem__(self, key):
print("执行 delitem")
del self.__dict__[key]
def __delattr__(self, item):
print("执行 delattr")
self.__dict__.pop(item)
f = Foo("alex",22,"M")
print(f["name"]) #f["name"]自动触发__getitem__方法
f["role"] = "teacher" #自动触发__setitem__方法
del f["role"] #对应__delitem__方法 必须重写__delitem__方法
del f.role #对应__delattr__ 不必重写 object原生支持