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')
复制代码

posted on   与太阳肩并肩  阅读(2)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 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_垃圾回收机制
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示