反射
反射:通过字符串的形式来操作对象属性。
1、对象反射
1、getattr 获取指定的对象属性
变量名 = getattr(对象 , '对象属性' , 设置默认值) # 设置默认值:指当在对象中查找不到对应的对象顺序ing是返回的内容 , 如果没有设置默认是并且属性不存在就会报错。
2、setattr去对象中设置一个对象属性
setattr(对象,'对象属性' , 值)
3、hasattr判断对象是否有对应的对象属性
变量名 = hasattr(对象 , '对象属性') # 返回bool类型
4、delattr删除指定对象的属性
delattr(对象,'对象属性')
class A: def __init__(self , name , age): self.name = name self.age = age def say_hi(self): print(f'hi , {self.name}') ddg = A('大大怪' , 24) print(ddg.name) ddg.say_hi() # 变量名 = getattr(对象 , '对象属性') nn = input('请输入要查看属性名:') n = getattr(ddg, nn, '属性方法找不到') print(n) # setattr(对象,'对象属性' , 值) setattr(ddg , 'name' , '小小怪') setattr(ddg , 'height' , 1.89) print(ddg.name) print(ddg.__dict__) # 变量名 = hasattr(对象 , '对象属性') bol = hasattr(ddg , 'weight') print(bol) res = hasattr(ddg , 'height') print(res) # delattr(对象,'对象属性') # delattr(ddg , 'say_hi') # 报错 , 不能删除方法 delattr(ddg , 'age') print(ddg.__dict__)
实例:
class User: def login(self): print('这是微信登录页面') def register(self): print('这是一个微信注册') def speak(self): print('这是聊天页面') # 未使用反射 # ddg = User() # choose = input('请输入你要操作的功能:') # if choose == 'login': # ddg.login() # elif choose == ' register': # ddg.register() # elif choose == 'speak': # ddg.speak() # else: # print('输入有误') # 使用反射 xxg = User() choose = input('请输入你要操作的功能:') if hasattr(xxg , choose): fun = getattr(xxg , choose) fun() else: print('没有这个功能')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix