python基础-类的反射
1)反射是通过字符串方式映射内存中的对象。
python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,
改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。
注意:类的反射不能使用类的私有方法
# -*- coding:utf-8 -*- __author__ = 'shisanjun' class Foo(object): def __init__(self): self.name="s" def func(self): return 'func' obj=Foo() #检查是否含有成员 print("----是否有成员-----") print(hasattr(obj,"name")) print(hasattr(obj,"func")) #获取成员 print("----获取成员-----") print(getattr(obj,"name")) print(getattr(obj,"func")()) #getattr(obj,"func")实例的func的内存地址 #设置成员 print("----设置成员-----") def show(num): return num+1 setattr(obj,"age",18) setattr(obj,"show",3) print(getattr(obj,"age")) print(getattr(obj,"show")) delattr(obj,"age") delattr(obj,'show') print("----是否有成员-----") print(hasattr(obj,"age")) print(hasattr(obj,"show")) """ ----是否有成员----- True True ----获取成员----- s func ----设置成员----- 18 3 ----是否有成员----- False False """
2)其他方法访问类的成员
class Foo(object): def __init__(self): self.name = 'alex' def func(self): return 'func' # 不允许使用 obj.name obj = Foo() print obj.__dict__['name']