开笔了,就写一下,hasattr,getattr,setattr。

Posted sidianok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开笔了,就写一下,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可以向对象添加属性,还可以修改里面的属性,具体操作还是比较简单的。

以上是关于开笔了,就写一下,hasattr,getattr,setattr。的主要内容,如果未能解决你的问题,请参考以下文章

python中hasattr()getattr()setattr()函数的使用

python反射hasattr getattr setattr delattr

python中的hasattr()getattr()setattr()

Python:hasattr() getattr() setattr() 函数

python 反射 hasattr getattr

Python之hasattr()getattr()和setattr()