在Python中,反射(Reflection)允许程序在运行时检查和修改其自己的结构或行为。具体来说,反射可以包括以下几个方面的操作:
- 获取对象的信息:比如对象的类型、对象的属性、对象的方法等。
- 动态调用对象的方法:通过字符串形式的方法名来调用对象的方法。
- 动态创建或修改对象:在运行时创建新的对象或修改已有对象的属性或方法。
代码示例如下:
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
print("姓名:" + self.name + ",年龄:" + str(self.age))
if __name__ == '__main__':
person = Person('张三', 18)
person.info()
print("######################")
# 获取对象的类型及对象下所有的属性和方法
print(type(person))
print(dir(person))
# 判断Person类中是否有name这个属性
print("######################")
print(hasattr(person, "name"))
print(hasattr(person, "age"))
print("######################")
# 获取person类中的name和age属性值
print(getattr(person, "name"))
print(getattr(person, "age"))
print("######################")
# 对person类中的属性设置值
setattr(person, "name", "李四")
# 给person类设置一个新属性
setattr(person, "sex", "男")
print(person.sex)
person.info()
print("######################")
# 删除类中的属性
print(delattr(person, "age"))
person.info()