FreezeJ' Blog

pthon反射

2019-04-28

Python反射

所谓“反射”,指的是以字符串的形式来操作(包括:增删改查)对象的属性和方法 。

用于“反射”的内置函数有以下四个:

  1. hasattr
  2. getattr
  3. setattr
  4. delattr
# 反射的四个内置方法
class Animal(object):
    def __init__(self):
        self.name = 'animal'
    def eat(self):
        print('%s eat' % self.name)


dog = Animal()
print(hasattr(dog, 'name'))  # True
print(getattr(dog, 'name'))  # animal
setattr(dog, 'name','dog')  # 相当于dog.name = dog
print(getattr(dog, 'name'))  # dog
delattr(dog, 'name')  # 相当于del dog.name
print(hasattr(dog, 'name'))  # False

只有在不知道对象信息的情况下,才会去获取对象信息。

举个例子:别的程序传给你一个变量var,这个变量是一个字符串,并且这个字符串对应某个模块下的某个函数名,如果你通过变量var直接导入该模块下的该函数,肯定是不行的,因为var是个变量,这时就可以使用反射,例如:var=”xxx” f=getattr(module,var),这样,就得到了var对应的模块中的函数f,接下来就可以调用f了。

Tags: Python