本文实例讲述了Python反射的用法。分享给大家供大家参考,具体如下:
在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对象中的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在,这是我们需要用一个特殊的方法或机制要访问和操作这个未知的方法或变量,这中机制就称之为反射。接下记录下反射几个重要方法:
hasattr
判断对象中是否有这个方法或变量
class Person(object): def __init__(self,name): self.name = name def talk(self): print("%s正在交谈"%self.name) p = Person("laowang") print(hasattr(p,"talk")) # True。因为存在talk方法 print(hasattr(p,"name")) # True。因为存在name变量 print(hasattr(p,"abc")) # False。因为不存在abc方法或变量
getattr
获取对象中的方法或变量的内存地址
class Person(object): def __init__(self,name): self.name = name def talk(self): print("%s正在交谈"%self.name) p = Person("laowang") n = getattr(p,"name") # 获取name变量的内存地址 print(n) # 此时打印的是:laowang f = getattr(p,"talk") # 获取talk方法的内存地址 f() # 调用talk方法
我们发现getattr有三个参数,那么第三个参数是做什么用的呢"htmlcode">
s = getattr(p,"abc","not find") print(s) # 打印结果:not find。因为abc在对象p中找不到,本应该报错,属性找不到,但因为修改了找不到就输出not find
setattr
为对象添加变量或方法
def abc(self): print("%s正在交谈"%self.name) class Person(object): def __init__(self,name): self.name = name p = Person("laowang") setattr(p,"talk",abc) # 将abc函数添加到对象中p中,并命名为talk p.talk(p) # 调用talk方法,因为这是额外添加的方法,需手动传入对象 setattr(p,"age",30) # 添加一个变量age,复制为30 print(p.age) # 打印结果:30
delattr
删除对象中的变量。注意:不能用于删除方法
class Person(object): def __init__(self,name): self.name = name def talk(self): print("%s正在交谈"%self.name) p = Person("laowang") delattr(p,"name") # 删除name变量 print(p.name) # 此时将报错
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
标签:
Python,反射
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“Python反射的用法实例分析”评论...
更新日志
2025年05月14日
2025年05月14日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]