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

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

python动态函数hasattr,getattr,setattr,delattr的更多相关文章

  1. python 内置函数的补充 isinstance,issubclass, hasattr ,getattr, setattr, delattr,str,del 用法,以及元类

    isinstance   是 python中的内置函数 , isinstance()用来判断一个函数是不是一个类型 issubclass  是python 中的内置函数,  用来一个类A是不是另外一个 ...

  2. isinstance/type/issubclass的用法,反射(hasattr,getattr,setattr,delattr)

    6.23 自我总结 面向对象的高阶 1.isinstance/type/issubclass 1.type 显示对象的类,但是不会显示他的父类 2.isinstance 会显示的对象的类,也会去找对象 ...

  3. Python hasattr,getattr,setattr,delattr

    #!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # 反 ...

  4. python反射hasattr getattr setattr delattr

    反射 : 是用字符串类型的名字 去操作 变量 相比于用eval('print(name)') 留有 安全隐患 反射 就没有安全问题 hasattr 语法: hasattr(object, name)o ...

  5. Python标准库:内置函数hasattr() getattr() setattr() 函数使用方法详解

    hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False.参数object是一个对象 ...

  6. hasattr getattr setattr delattr --> (反射)

    class Room: def __init__(self,name): self.name = name def big_room(self): print('bigroot') R = Room( ...

  7. 反射hasattr; getattr; setattr; delattr

    hasattr(obj,name_str):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者Falsegetattr(obj,name_str):#根据字符串去获取对 ...

  8. Python的getattr(),setattr(),delattr(),hasattr()及类内建__getattr__应用

    @Python的getattr(),setattr(),delattr(),hasattr() 先转一篇博文,参考.最后再给出一个例子 getattr()函数是Python自省的核心函数,具体使用大体 ...

  9. 【转】Python的hasattr() getattr() setattr() 函数使用方法详解

    Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值 ...

随机推荐

  1. 20155310 2016-2017-2 《Java程序设计》第八周学习总结

    20155310 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章 通用API 通用API •日志:日志对信息安全意义重大,审计.取证.入侵检验等都会 ...

  2. (转)C语言中scanf函数与空格回车

    来源:http://blog.csdn.net/xia7139/article/details/14522493

  3. UVA10590 Boxes of Chocolates Again

    题意 将正整数N拆分成若干个正整数之和,问有多少种不重复的拆分方案. \(n \leq 5000\) 分析 用f(i,j)表示将i拆成若干个数字,最大的那个数字(即最后一个数)不超过j的方案数. 转移 ...

  4. MySQL--忘记MYSQL管理员密码

    如root用户密码,可以按照以下方式来修改: STEP1: 停止MySQL服务 ps -ef | grep -v 'grep' | grep 'mysqld' | awk '{print $2}' | ...

  5. drill 集成开源s3 存储minio

    drill 支持s3数据的查询,同时新版的通过简单配置就可以实现minio 的集成 测试使用docker 运行drill 参考 https://www.cnblogs.com/rongfenglian ...

  6. GridView 相同单元格合并

    效果如下: 主要代码如下:public class GridDecorator { public static void MergeRows(GridView gridView) { for (int ...

  7. curl 知识点

    curl :command line tool and library for transferring data with URLs curl 命令,常用缩写: curl 命令 缩写 说明 curl ...

  8. uml 知识点

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言

  9. 在C#客户端用HTTP上传文件到Java服务器

    在C#客户端用HTTP上传文件到Java服务器  来源:http://www.cnblogs.com/AndyDai/p/5135294.html 最近在做C / S 开发,需要在C#客户端上传文件到 ...

  10. 解决Qt Creator下 undefined reference to 'qmain(int,char**)'的问题

    Qt Creator运行以下程序: #include <QTextStream> #include <QList> int main(void) { QTextStream o ...