Python动态获取和设置对象属性
1、打开Python开发工具IDLE,新建‘attr.py’文件,并写代码如下:class animal(): def __init__(self,zhonglei,name): self.zhonglei = zhonglei self.__name = name @property def name(self): return self.__nameanimal1 = animal('cat','xiaohua')print (getattr(animal1,'name'))定义了animal类,__name代表私有字段,私有字段一般通过属性方式来访问,定义了name属性,但是当属性未知时,就要通过getattr方式来访问

3、类比一下不用getattr的方式,代码如下:class animal(): def __init__(self,zhonglei,name): self.zhonglei = zhonglei self.__name = name @property def name(self): return self.__nameanimal1 = animal('cat','xiaohua')print (getattr(animal1,'name'))print (animal1.name)

5、除了getattr,还有setattr设置属性值,代码如下:class animal(): def __init__(self,zhonglei,name): self.zhonglei = zhonglei self.__name = name @property def name(self): return self.__name @name.setter def setname(self,name): self.__name = nameanimal1 = animal('cat','xiaohua')setattr(animal1,'setname','xiaohuang')print (getattr(animal1,'name'))

7、还有一个判断时候有厢咆廨炝某个属性的函数hasattr,有返回True,没有返回False.代码如下:class animal(): def __init__(self荑樊综鲶,zhonglei,name): self.zhonglei = zhonglei self.__name = name @property def name(self): return self.__name @name.setter def setname(self,name): self.__name = nameanimal1 = animal('cat','xiaohua')setattr(animal1,'setname','xiaohuang')print (getattr(animal1,'name'))print (hasattr(animal1,'name'))print (hasattr(animal1,'setname'))print (hasattr(animal1,'abc'))
