25. 反射

kurome / 2023-09-01 / 原文

一、什么是反射

  反射,本质上就是通过字符的形式去操作对象/模块中的成员。在 Python 中,我们可以通过三个内置函数去实现反射相关的功能。

getattr(object, name)                # 获取对象中的成员
setattr(object, name, value)         # 设置对象中的成员
hasattr(object, name)                # 判断对象的成员是否存在
import test

if hasattr(test,"run"):                     # 判断对象的成员是否存在
    func = getattr(test,"run")              # 获取对象中的成员
    result = func()
    print(result)

setattr(test,"name","Sakura")               # 设置对象中的属性
print(test.name)

print(getattr(test,"name"))

setattr(test,"sum",lambda a,b: a + b)       # 设置对象中的函数
result = test.sum(100,200)
print(result)

func = getattr(test,"sum")
result = func(10,20)
print(result)