欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

python反射详解

时间:2023-05-27

"""1.什么是反射: 把字符映射到实例的变量或实例的方法,然后可以去执行调用、修改 反射的本质(核心):基于字符串的事件驱动,利用字符串的形式去操作对象/模块中成员(方法、属性)2.反射的四个重要方法 1)getattr获取对象属性/对象方法 2)hasattr判断对象是否有对应的属性及方法 3)delattr删除指定的属性 4)setattr为对象设置内容"""class TestObject: def __init__(self,name,age): self.name = name self.age = age def test(self): print("执行test方法")def a(): print("类的外部方法")if __name__ == '__main__': """1.getattr 获取对象属性、对象方法""" xiaoyu = TestObject("小于",20) #获取对象的属性 print(getattr(xiaoyu,"name")) #获取对象的方法 result = getattr(xiaoyu,"test") print(type(result)) result() """2.hasattr 判断对象是否有对应的属性、方法""" if hasattr(xiaoyu,"address"): print(getattr(xiaoyu, "address")) if hasattr(xiaoyu,"name"): print(getattr(xiaoyu, "name")) """3.delattr 删除属性""" # delattr(xiaoyu,"name") """4.setattr 为对象设置内容""" #修改属性的值 setattr(xiaoyu,"name","liuwei") print(getattr(xiaoyu, "name")) #修改方法 setattr(xiaoyu,"test11",a) getattr(xiaoyu,"test11")() #相当于增加了test11方法 xiaoyu.test11()

"""去实现某个业务,定义类,类里面封装了很多方法,提供一个统一的入口能够调用各种方法业务:登录 退出 注册 注销"""class Test: func_list = ["login","loginOut","register","delete"] def login(self): print("这是登录") def loginOut(self): print("这是退出") def register(self): print("这是注册") def delete(self): print("这是注销") #1.login 2.loginOut 3.register 4.delete def run(self,num): getattr(self,self.func_list[num-1])()num = int(input("请输入你的操作(1.login 2.loginOut 3.register 4.delete):"))Test().run(num)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。