第十六节:内置函数补充

通过  .  的方式获取、设置、删除对象属性的时候会触发的内置函数__getattr__、__setattr__、__delattr__


class
Dog:
def __init__(self,name,age):
self.name=name
self.age=age
def __getattr__(self, item):#在获取不存在的函数属性的时候会触发
print("执行的是getattr")
def __setattr__(self, key, value):#在设置对象属性的时候会触发
self.__dict__[key] = value
def __delattr__(self, item):#在删除对象属性的时候会触发的内置函数
self.__dict__.pop(item)
def run(self):
print("%s今年%s"%(name,age)

 def __getattribute__(self, item):  #获取存在的函数属性的时候执行该函数
 
raise AttributeError('抛出异常')#在获取不存在的函数属性的时候会抛出异常给__getattr__

#__getitem__、__setitem__、__delitem__通过键值的方式访问、设置、删除对象属性的时候会触发的内置函数
class Foo:
def __getitem__(self, item):
print('getitem')
return self.__dict__[item]

def __setitem__(self, key, value):
print('setitem')
self.__dict__[key]=value

def __delitem__(self, key):
print('delitem')
self.__dict__.pop(key)

f1=Foo()
print(f1.__dict__)
f1['name']='sss'
print(f1['name'])

del f1['name']
执行结果如下:
{} setitem getitem sss delitem

猜你喜欢

转载自www.cnblogs.com/sxdpython/p/12747419.html