zoukankan      html  css  js  c++  java
  • 开笔了,就写一下,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可以向对象添加属性,还可以修改里面的属性,具体操作还是比较简单的。

  • 相关阅读:
    在同步块中修改指向同步对象的引用
    算法学习记录3 插入排序
    算法学习记录2 归并排序
    算法学习记录1 快速排序
    CE学习记录1
    jenkins 学习记录2
    jenkins 学习记录1
    扩展 jquery miniui 组件实现自动查询数据
    java对象与XML相互转化
    分享公司缓存的用法
  • 原文地址:https://www.cnblogs.com/sidianok/p/11785031.html
Copyright © 2011-2022 走看看