首页 > 其他 > 详细

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

时间:2019-11-03 10:32:48      阅读:96      评论:0      收藏:0      [点我收藏+]

这三个函数是来判断对象里面是否有这个属性或者方法(方法也可以成为可调用的属性)

 

以前经常写过,写成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。

原文:https://www.cnblogs.com/sidianok/p/11785031.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!