Python动态获取和设置对象属性

 时间:2024-10-15 02:59:32

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方式来访问

Python动态获取和设置对象属性

2、F5运行程序,打印出name属性值,getattr函数传递两个参数一个是对象,一个是属性名,注意是字符串格式,而不是变量格式

Python动态获取和设置对象属性

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)

Python动态获取和设置对象属性

4、F5运行程序,同样打印出name的属性值,可能有疑惑,为什么还要用更复杂的getattr方式,这就是当使用别人写好的框架,无法知道都有哪些字段属性时候使用。

Python动态获取和设置对象属性

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'))

Python动态获取和设置对象属性

6、F5运行程序,setattr把程序初始化的name值改了

Python动态获取和设置对象属性

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'))

Python动态获取和设置对象属性

8、F5运行程序,animal1对象有name和setname属性,没有abc属性

Python动态获取和设置对象属性
  • MsgBox函数如何将很长的信息分段显示?
  • excel将数组每个元素重复N次写入列的操作!
  • 使用Excel把数字转换成ascii
  • MATLAB显示彩色地形数据
  • Excel一键实现所选区域生成0到1之间的随机数字
  • 热门搜索
    关于手抄报的花边 艺术手抄报 名著阅读手抄报 神话故事手抄报图片 关于读书的手抄报资料 关于邪教的手抄报 做文明小学生手抄报 感恩的手抄报图片 清明节的手抄报大全 我爱足球手抄报