python反射(自省)

反射(自省)的简单理解:
通过类名实例化对象;
得到类的所有属性和函数,并实现调用;

简单示例:

# -*- coding: utf-8 -*-
class User(object):
    def __init__(self):
        self.name = 'abc'
        self.age = 18

    def introduce(self):
        print "My name is :"+self.name + ", age:" + str(self.age)

# 根据类名实例化对象
def get_obj(name):
    obj = globals()[name]()
    return obj

name = User.__name__  # 得到类名
u = get_obj(name)
u.introduce()
输出结果:
My name is :abc, age:18

常用函数:

print dir(u)                     # 返回该对象的所有属性和函数列表
print hasattr(u, 'name')         # 判断是否存在传入的属性或函数
print getattr(u, 'name')         # 得到对象属性值
print setattr(u, 'name', 'ccc')  # 设置对象属性的值
print u.__dict__                 # 返回该对象自定义属性

你可能感兴趣的:(python)