反射

发布时间 2024-01-05 20:33:57作者: -半城烟雨

【一】反射

【1】什么是反射

  • 反射是一种程序可以访问、检测和修改其本身状态或行为的能力。
  • 在 Python 中,反射主要指通过字符串的形式操作对象的属性。

【2】Python中的反射

  • 通过字符串的形式操作对象相关的属性。
  • python中的一切事物都是对象(都可以使用反射)

【二】反射方法

【1】反射方法介绍

  • getattr(object, name[, default])
    • 获取对象的属性值,如果属性不存在,可提供默认值。
  • hasattr(object, name)
    • 判断对象是否具有指定属性
  • setattr(object, name, value)
    • 设置对象的属性值
  • delattr(object, name)
    • 删除对象的属性

【2】反射方法使用

  • hasattr(object,name)
  • setattr(object,name)
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def run(self):
        print(f'self.nameis running')
    def func(self,name,age):
        if hasattr:
            return getattr(self,name,age)
        else:
            setattr(self,name,age)
            print('设置完成')
            print(self,name,age)


person=Person('hope',18)
# print(getattr(person,'name'))
# print(getattr(person,'age'))
# print(getattr(person,'run'))
# print(hasattr(person,'name'))
# print(hasattr(person,'age'))

def func(self, name, age):
    if hasattr:
        return getattr(self, name, age)
    else:
        setattr(self, name, age)
        print('设置完成')
        return func(self, name, age)

print(func(person, 'name', 'hope'))
  • delattr(object,name)

    删除对象的属性

  • 反射当前模块中的吃成员

【三】反射的好处

  • 反射的好处就是,可以事先定义好接口,接口只有在被完成后才会真正执行,这实现了即插即用,这其实是一种‘后期绑定’,意味着可以在程序运行过程中动态地绑定接口的实现。

  • 这种灵活性使得程序更容易扩展和维护