Day33.反射机制
1.反射机制_什么是反射机制和为什么要用反射
2.反射机制_实现反射机制的步骤
# todo 3. 如何实现反射? class People: def __init__(self, name, age): self.name=name self.age=age def say(self): print('<{}:{}>'.format(self.name, self.age)) obj = People('people1', 18) # todo 实现反射机制的步骤 # todo 1. 先通过dir:查看某一个对象下,可以`.`出哪些属性来 print('1.先通过dir:查看某一个对象下,可以`.`出哪些属性来'.center(40, '-')) print(dir(obj), '\n') # todo 2. 可以通过字符串反射到真正的属性上,得到属性 print('2.可以通过字符串反射到真正的属性上,得到属性'.center(40, '-')) print(obj.__dict__[dir(obj)[-2]], '\n') # todo 3. 和上方原理相同的四个内置函数的使用: 通过字符串来操作属性值 print('和上方原理相同的四个内置函数的使用'.center(40, '-')) # 1. hasattr() print('hasattr判断是否有该属性'.center(30, '-')) print(hasattr(obj, 'name')) print(hasattr(obj, 'say')) print(hasattr(obj, 'x'), '\n') # 2. getattr() print('getattr等同于obj.name'.center(30, '-')) print(getattr(obj, 'name'), '\n') # 3. setattr() print('setattr修改数值,修改完再次获取对象内容'.center(30,'-')) setattr(obj, 'name', 'EGON') # 改成obj.name='EGON' print(obj.name, '\n') # 4. delattr() print('delattr同于del obj.name,删掉对象的属性'.center(40, '-')) print('delattr执行前:', obj.__dict__) delattr(obj, 'name') print('delattr执行后:', obj.__dict__, '\n')
3.反射机制_使用反射方法调用对象的方法和类下面的函数
# todo 3. 如何实现反射? class People: def __init__(self, name, age): self.name=name self.age=age def say(self): print('<{}:{}>'.format(self.name, self.age)) obj = People('people1', 18) res1 = getattr(obj, 'say') # 对象.方法:obj.say res2 = getattr(People, 'say') # 类.函数:People.say print('对象.方法:obj.say:', res1) print('类.函数:People.say:', res2, '\n')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2023-07-11 Day05_四种格式化输出
2023-07-11 day05_与用户交互
2023-07-11 Day05_垃圾回收机制