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)
    
  • 相关阅读:
    POJ
    POJ
    POJ1753 Flip Game(位运算+暴力枚举)
    20160326 javaweb 请求转发和请求包含
    将博客搬至CSDN
    javaweb 中的乱码问题
    20160324 javaweb 之request
    20160322 javaweb 学习笔记--response验证码实现
    20160322 javaweb 学习笔记--response 重定向
    深入分析 Java 中的中文编码问题 (文章来自网络)
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12316466.html
Copyright © 2011-2022 走看看