博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深夜偷精之反射函数
阅读量:6142 次
发布时间:2019-06-21

本文共 1891 字,大约阅读时间需要 6 分钟。

hasattr(object,name):判断object对象里是否有name属性或者方法,有=>True,否=>False!    

>>> class test():...     name="xiaohua"...     def run(self):...             return "HelloWord"...>>> t=test()>>> hasattr(t, "name") #判断对象有name属性True>>> hasattr(t, "run")  #判断对象有run方法True>>>

getattr(object,name[,default]):获取object对象里的name属性或者方法,属性存在=>打印,不存在=>默认值(默认值可选),如果是对象里的方法,返回的是方法的内存地址,加()就可运行!

>>> class test():...     name="xiaohua"...     def run(self):...             return "HelloWord"...>>> t=test()>>> getattr(t, "name") #获取name属性,存在就打印出来。'xiaohua'>>> getattr(t, "run")  #获取run方法,存在就打印出方法的内存地址。
>>>> getattr(t, "run")() #获取run方法,后面加括号可以将这个方法运行。'HelloWord'>>> getattr(t, "age") #获取一个不存在的属性。Traceback (most recent call last): File "
", line 1, in
AttributeError: test instance has no attribute 'age'>>> getattr(t, "age","18") #若属性不存在,返回一个默认值。'18'>>>

setattr(object,name,values):给对象的属性赋值,若属性不存在,则先创建再赋值!

>>> class test():...     name="xiaohua"...     def run(self):...             return "HelloWord"...>>> t=test()>>> hasattr(t, "age")   #判断属性是否存在False>>> setattr(t, "age", "18")   #为属相赋值,并没有返回值>>> hasattr(t, "age")    #属性存在了True>>>

------------------------------------------------------------------------------------------------------------低调内涵不华丽的分割线--------------------------------------------------------------------------------------------------------------------------

一种综合的用法是:判断一个对象的属性是否存在,若不存在就添加该属性。

 

>>> class test():...     name="xiaohua"...     def run(self):...             return "HelloWord"...>>> t=test()>>> getattr(t, "age")    #age属性不存在Traceback (most recent call last):  File "
", line 1, in
AttributeError: test instance has no attribute 'age'>>> getattr(t, "age", setattr(t, "age", "18")) #age属性不存在时,设置该属性'18'>>> getattr(t, "age") #可检测设置成功'18'>>>

 

转载于:https://www.cnblogs.com/gz369521/p/7271735.html

你可能感兴趣的文章
多线程基础(四)线程的状态、安全性
查看>>
字符串md5之后转成int类型, 方便数据库索引
查看>>
linux下jdk安装 failed /usr/local/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
查看>>
git将一个分支的某个文件合并到当前分支
查看>>
ExtJS学习--------Ext.Element中的经常使用事件和其它重要的方法学习(实例)
查看>>
Python调用C模块以及性能分析
查看>>
HTTP状态管理机制之Cookie(转)
查看>>
JS魔法堂:再识Number type
查看>>
Mac OS升级到Yosemite后一些问题
查看>>
软件原型设计工具
查看>>
手把手搭建WAMP+PHP+SVN开发环境
查看>>
高速公路坐标高程计算软件3.5发布
查看>>
从输入url到页面展示到底发生了什么
查看>>
六小龄童终究还是没能上春晚
查看>>
CSS手动改变DIV高宽
查看>>
配置文件后面的rc的由来
查看>>
【Gym 100712B】Rock-Paper-Scissors
查看>>
取模运算
查看>>
Node.js的cluster模块——Web后端多进程服务
查看>>
在hadoop 的任务中设置 map数量
查看>>