• python动态函数hasattr,getattr,setattr,delattr


    hasattr(object,name)

    hasattr用来判断对象中是否有name属性或者name方法,如果有,染回true,否则返回false

    class attr():
        def fun(x):
            return x%2==1

    if __name__ == '__main__':
        attr=attr()
      print  hasattr(attr,'fun')

    setattr(object,name,value)

    给对象的属性赋值,如属性不存在,先创建

    class attr():
        def fun(x):
            return x%2==1
    if __name__ == '__main__':
        attr=attr()
      print  hasattr(attr,'fun')
      setattr(attr,'x',4)
      print attr.x

    也可以使用该方式,动态创建方法

    def add(x,y):
        return x+y
    class attr():
        def fun(x):
            return x%2==1
    if __name__ == '__main__':
        attr=attr()
        print  hasattr(attr,'fun')
        setattr(attr,'add',add) 注意,这里的add函数不能添加(),几不能谢伟add()
        print hasattr(attr,'add')返回true
        print attr.add(4,5) 返回9

    getattr(object,name,default)

    获取对象的属性或者方法,如果存在返回,如果不存在,返回默认值,默认值是可选的

    如果返回的对象是方法,返回方法的内存地址,如果要运行,可以在后面添加()

    def add(x,y):
        return x+y
    class attr():
        def fun(x):
            return x%2==1
    if __name__ == '__main__':
        attr=attr()
       
    print getattr(attr,'fun')返回fun的内存地址
    print getattr(attr,'name','hello')返回hello,但不创建name属性
     

    defattr(object,name)

    用来删除对象的属性

    def add(x,y):
        return x+y
    class attr():
        def fun(x):
            return x%2==1
    if __name__ == '__main__':
        attr=attr()
        print  hasattr(attr,'fun')
        setattr(attr,'x',4)
        print hasattr(attr,'x')
        #print attr.add(4,5)
       
    print getattr(attr,'fun')
        delattr(attr,'x') 删除了x属性
        print hasattr(attr, 'x')返回为false

    删除在对象中已经定义好的属性,会报错,可以删除动态添加的属性

  • 相关阅读:
    字符编码
    数据类型
    流程控制之判断,while循环,for循环
    数据类型,与用户交互,格式化输出,基本运算符
    操作系统,编程语言分类,执行python两种方式,变量,内存管理,定义变量的三个特征
    计算机硬件基础-笔记
    20200714_31adb命令和monkey压力稳定性测试
    20200707_28POM
    20200705_27DDT与Yaml数据驱动
    20200702_26UnitTest套件与运行器
  • 原文地址:https://www.cnblogs.com/hellowcf/p/7122598.html
Copyright © 2020-2023  润新知