码迷,mamicode.com
首页 > 编程语言 > 详细

Python 反射

时间:2017-12-28 19:53:38      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:mon   rom   getattr   就是   port   介绍   bsp   init   div   

反射说简单点 --> 就是利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员。

1.根据字符串的形式导入模块。
2.根据字符串的形式去对象(某个模块)中操作其成员 

说反射之前先介绍一下__import__方法,这个和import导入模块的另一种方式

1. import  commons
2. __import__(commons) 

如果是多层导入:

1. from list.text import commons 
2. __import__( list.text.commons,fromlist=True) #如果不加上fromlist=True,只会导入list目录

反射即想到4个内置函数分别为:getattr、hasattr、setattr、delattr  获取成员、检查成员、设置成员、删除成员下面逐一介绍先看例子:

class Foo():
    def __init__(self):
        self.name = abc

    def func(self):
        return "OK"


obj = Foo()
# 获取成员
ret = getattr(obj, func)  # 获取的是个对象
r = ret()
print(r)

# 检查成员
ret = hasattr(obj, func)  # 因为有func方法所以返回True
print(ret)

# 设置成员
print(obj.name)  # 设置之前为:abc
ret = setattr(obj, name, 19)
print(obj.name)  # 设置之后为:19


# 删除成员
print(obj.name)  # abc
delattr(obj, name)
#print(obj.name)  # 报错
OK
True
abc
19

 

Python 反射

标签:mon   rom   getattr   就是   port   介绍   bsp   init   div   

原文地址:https://www.cnblogs.com/ming5218/p/8137130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!