开笔了,就写一下,hasattr,getattr,setattr。
这三个函数是来判断对象里面是否有这个属性或者方法(方法也可以成为可调用的属性)
以前经常写过,写成xx.getattr.....记住是函数,直接命令顶头开始写。
In [23]: class Demo:
...: def __init__(self):
...: self.name = 'sidian'
...: def out_name(self):
...: return self.name
...:
In [24]:
In [24]: dd = Demo()
In [25]: hasattr(dd,'name')
Out[25]: True
In [26]: hasattr(dd,'out_name')
Out[26]: True
In [27]: hasattr(dd,'age')
Out[27]: False
首先介绍hasatr,这个是判断对象是否有这个属性,返回的是Boll值,True或者False。
In [30]: getattr(dd, 'name') Out[30]: 'sidian' In [31]: getattr(dd, 'out_name') Out[31]: <bound method Demo.out_name of <__main__.Demo object at 0x10a4a9290>> In [32]: getattr(dd, 'out') --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-32-de58a5a0d8df> in <module> ----> 1 getattr(dd, 'out') In [35]: getattr(dd, 'out','ok') Out[35]: 'ok'
接下来测试的是getattr,这个名字虽然有get但脾气一点也不好,但他取不出对象里面的属性时,直接死给你看,所以可以添加第三个参数,但取不到输出第三个参数。
In [37]: setattr(bb,'age',18) In [38]: setattr(bb,'name','wangba') In [39]: getattr(bb,'age') Out[39]: 18 In [40]: getattr(bb,'name') Out[40]: 'wangba'
setattr可以向对象添加属性,还可以修改里面的属性,具体操作还是比较简单的。
浙公网安备 33010602011771号