Python 反射

Posted YM的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 反射相关的知识,希望对你有一定的参考价值。

反射说简单点 --> 就是利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员。

1.根据字符串的形式导入模块。
2.根据字符串的形式去对象(某个模块)中操作其成员 

说反射之前先介绍一下__import__方法,这个和import导入模块的另一种方式

1. import  commons
2. __import__(commons) 

如果是多层导入:

1. from list.text import commons 
2. __import__( list.text.commons,fromlist=True) #如果不加上fromlist=True,只会导入list目录

反射即想到4个内置函数分别为:getattr、hasattr、setattr、delattr  获取成员、检查成员、设置成员、删除成员下面逐一介绍先看例子:

class Foo():
    def __init__(self):
        self.name = abc

    def func(self):
        return "OK"


obj = Foo()
# 获取成员
ret = getattr(obj, func)  # 获取的是个对象
r = ret()
print(r)

# 检查成员
ret = hasattr(obj, func)  # 因为有func方法所以返回True
print(ret)

# 设置成员
print(obj.name)  # 设置之前为:abc
ret = setattr(obj, name, 19)
print(obj.name)  # 设置之后为:19


# 删除成员
print(obj.name)  # abc
delattr(obj, name)
#print(obj.name)  # 报错
OK
True
abc
19

 


以上是关于Python 反射的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL片段着色器不照亮场景

将 OpenGL 片段着色器设置为仅通过漫反射减少 vec4 色点的 RGB 值,而不是 alpha

反射机制

反射机制入门

反射机制入门

反射机制入门