• python 反射


    反射

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

    import  commons
    __import__('commons') 

    如果是多层导入:

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

    反射即想到4个内置函数分别为:getattr、hasattr、setattr、delattr  获取成员、检查成员、设置成员、删除成员

    下面逐一介绍

     1 #coding:UTF8
     2 
     3 
     4 class Foo(object):
     5  
     6     def __init__(self):
     7         self.name = 'abc'
     8  
     9     def func(self):
    10         return 'ok'
    11  
    12 obj = Foo()
    13 #获取成员
    14 ret = getattr(obj, 'func')#获取的是个对象
    15 r = ret()
    16 print(r)
    17 #检查成员
    18 ret = hasattr(obj,'func')#因为有func方法所以返回True
    19 print(ret)
    20 #设置成员
    21 print(obj.name) #设置之前为:abc
    22 ret = setattr(obj,'name',19)
    23 print(obj.name) #设置之后为:19
    24 #删除成员
    25 print(obj.name) #abc
    26 delattr(obj,'name')
    27 print(obj.name) #报错
    View Code
     1 运行结果:
     2 ok
     3 True
     4 abc
     5 19
     6 19
     7 Traceback (most recent call last):
     8   File "E:demo.py", line 27, in <module>
     9     print(obj.name) #报错
    10 AttributeError: 'Foo' object has no attribute 'name'
    View Code

    对于反射小节:

    1.根据字符串的形式导入模块。
    2.根据字符串的形式去对象(某个模块)中操作其成员 
  • 相关阅读:
    Jmeter性能监测及安装插件(推荐)
    测试用例使用传统excel还是思维导图(Xmind、MindManager等)?
    测试用例设计
    一个资深测试员的感悟
    log4j教程 10、PatternLayout
    log4j教程 9、HTMLLayout
    log4j教程 8、日志格式化
    log4j教程 7、日志记录级别
    log4j教程 6、Logger方法
    log4j教程 5、示例程序
  • 原文地址:https://www.cnblogs.com/qianyuliang/p/6411005.html
Copyright © 2020-2023  润新知