本文共 768 字,大约阅读时间需要 2 分钟。
反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动。
# -*-coding:utf-8 -*-# 反射在其他语言中执行效率比较低,在Python中执行效率高class foo: def __init__(self,name,age): self.name=name self.age=age def show(self): return "%s-%s"%(self.name,self.age)obj=foo("jiaxin",18)print(obj.name)b="name"#obj.b# AttributeError: 'foo' object has no attribute 'b'
getattr,hasattr,setattr,delattr四个函数
print(obj.__dict__[b])#getattr#setattr#hasattr#delattr#去什么东西里面获取什么属性v=getattr(obj,"name")print(v)# jiaxinfunc=getattr(obj,"show")print(func)#>print(func())# jiaxin-18print(hasattr(obj,"name"))# True 用于判断是否有name成员setattr(obj,"m1","n1")print(obj.m1) #这个m1是存在对象中的# n1delattr(obj,"m1")
转载于:https://blog.51cto.com/10777193/2103020