zoukankan      html  css  js  c++  java
  • Python 反射

    反射

    在做程序开发中,我们常常会遇到这样的需求:
        
        需要执行对象里的某个方法,或需要调用对象的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在
    
        这时我们需要用一个特殊的方法或机制要访问和操作这个未知的方法或变量,这种机制就称之为反射。接下来记录下反射几个的重要方法。
    

    反射的四种方法

    hasattr():判断一个对象里是否有对应的字符串方法

    getattr():根据字符串去获取obj对象里的对应的方法的内存地址

    setattr():给类实例对象动态添加一个新的属性

    delattr():给类实例对象动态删除一个已有的属性

    # class A:
    #     def __init__(self):
    #         self.a = 10
    #
    #     def func1(self):
    #         print('func1')
    #
    #     def func2(self):
    #         print('func2')
    #
    #     def func3(self):
    #         print('func3')
    # a = A()
    # ret = getattr(a,'ab')
    # print(ret)
    
    # for i in range(10):
    #     res = input('请输入你要访问的地址:')
    #     if hasattr(a,res):      判断输入的字符是否在类中存在
    #         f = getattr(a,res)
    #         f()
    #     else:
    #         print('404')        不存在则404
    

    向类中添加数据

    class A:
        pass
    
    def func(self):
        print('这是一个新的函数')
    
    a = A()
    b = 1      # 定义一个变量添加到类中
    setattr(a,'func',func)    # 将函数的功能添加到类中  
    setattr(a,'b',b)
    # a.func(a)
    print(a.b)
    
  • 相关阅读:
    深度学习网络压缩简单介绍
    骨架提取与分水岭算法
    高级形态学处理
    iview @change添加自定义参数
    设置axios拦截器,promise抛出的异常处理
    js 网页跳转
    js 加减法
    vue重新渲染组件(重置或者更新)
    Laravel里firstOrCreate、firstOrNew、updateOrCreate 方法使用
    算法
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12316466.html
Copyright © 2011-2022 走看看