代码:
点击查看代码
#!/usr/bin/env python
#! -*- coding:utf-8 -*-
class A(object):
def __setattr__(self, key, value):
self.__dict__[key] = value
def __getattr__(self, name):
return "xxx"
obj = A()
代码1:
print(obj.__dict__)
结果:
{} # 空字典
代码2:
print(obj.name)
结果:
xxx
代码3:
点击查看代码
obj.name = 'BBB'
print(obj.__dict__)
print(obj.name)
print(obj.xxx)
点击查看代码
{'name': 'BBB'}
BBB
xxx
总结:
1、当我们第一次获取obj.__dict__的结果是为空的字典。
2、当我们获取对象的某个属性的时候,会先在整个类中找,如过没有则去__getattr__方法里面找,并返回__getattr__中的属性。
3、当我们操作代码obj.name=’BBB’后,此时在类中会自动调用__setattr__方法;所以此时我们再打印obj.__dict__的时候结果会出现我们设置的属性名和属性对应的值组成的字典。
标签:__,obj,name,python,代码,getattr,dict From: https://www.cnblogs.com/SunshineWeather/p/18258373