前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python反射详解

Python反射详解

作者头像
王大力测试进阶之路
发布2019-10-25 17:41:18
3420
发布2019-10-25 17:41:18
举报
文章被收录于专栏:橙子探索测试橙子探索测试

https://mp.weixin.qq.com/mp/homepage?__biz=Mzg5MzI1NTI0Mw==&hid=3&sn=cfe9f1fb73973a76178bb4d56c3db1d7

反射

#hasattr(obj,name_str)判断一个对象obj里是否有对应的name_str字符串的方法

#getattr(obj,name_str)根据字符串去获取obj对象里的对应的方法的内存地址

#setattr(object, name, value) setattr(x,“foobar”,123)相当于x.foobar = 123。

#delattr(object, name) 该函数删除该obj的一个由string指定的属性。delattr(x, 'foobar')=del x.foobar

代码语言:javascript
复制
class  test(object):
    def __init__(self,name):
        self.name=name
    def test1(self,fruit):
        print("%s吃%s水果"%(self.name,fruit))
T=test('王荔')
 
#存在此方法
if hasattr(T,'test1'):#检查成员
    func=getattr(T,'test1')#获取方法地址
    func('西瓜')
else:
    setattr(T,'name','王力')  #设置成员
    print(T.name)
    
#不存在此方法,设置变量或修改变量
if hasattr(T,'test10'):#检查成员
    func=getattr(T,'name')#获取变量
    print(func)
 
else:
    setattr(T,'age',30)  #设置变量
    setattr(T, 'name','王力') #修改变量
    print(T.name,T.age)
    
#通过setattr方法把test3函数动态装配到T这个实例里,方法名是"test2"
def test3(self):
    print('类外的方法绑定到类内')
setattr(T,'test2',test3)
func=getattr(T,'test2')
func(T)
 
 
#删除变量、删除方法
delattr(T,'name')
#delattr(T,'test1')
#print(T.name)
#print(T.test1())
 
C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
王荔吃西瓜水果
王力 30
类外的方法绑定到类内
 
Process finished with exit code 0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档