Python 中的反射

1.什么是反射

解释型的语言,在程序被加载到内存运行的时候,可以通过反射的方式获取对象的类型、属性等信息。

Python 的反射机制比较简单,共4个关键字:getattr, setattr, hasattr, delattr。

 

2.具有反射能力的内置函数

1)getattr

# 定义一个class
class Student:
    def showName(self, name):
        print(name)

# 实例化对象
stu = Student()

# 语法:getattr(boject, name [,default])
# object 表示对象
# name 表示要对象的属性
# default 可选,作为默认函数返回。如果没找到属性,并且不提供此参数,将触发AttibuteError
# 如果stu 存在showName 这个属性,就赋值给fun1, 否则将lambda 匿名函数赋值给fun1
fun1 =  getattr(stu, 'showName', lambda x: print(x))
    fun1('Tom')

2)setattr

# 为对象覆盖或者添加showAge 属性
setattr(stu, 'showAge', lambda x: print(x))
stu.showAge(15)

3)hasattr

# hasattr 返回bool 值
if not hasattr(stu, 'showAge'):
    setattr(stu, 'showAge', lambda x: print(x))
stu.showAge(16)

4)delattr

#用于删除对象的属性,作用和setattr 相反,要删除的属性必须存在,否则触发AttributError
delattr(a, 'name')

  

参考:

http://www.9xkd.com/user/plan-view.html?id=2298271364

posted on 2019-04-04 13:19  MojoJojo  阅读(197)  评论(0)    收藏  举报

导航