zoukankan      html  css  js  c++  java
  • 反射(python内置方法)

    1.反射定义

    '''
    反射: *******
        反射指的是通过 “字符串” 对 对象的属性进行操作。
    
        - hasattr: 通过 “字符串” 判断对象的属性或方法是否存在。
    
        - getattr: 通过 “字符串” 获取对象的属性或方法。
    
        - setattr: 通过 “字符串” 设置对象的属性或方法。
    
        - delattr: 通过 “字符串” 删除对象的属性或方法。
    
        # 注意: 反射的四个方法是python内置的。

    2.使用方法

    # class Foo:
    #     def __init__(self, x, y):
    #         self.x = x
    #         self.y = y
    #
    #
    # foo_obj = Foo(10, 20)
    # hasattr
    # 通过字符串x 判断对象中是否有 x属性
    # print(hasattr(foo_obj, 'x'))  # True
    # print(hasattr(foo_obj, 'y'))  # True
    # print(hasattr(foo_obj, 'z'))  # False
    
    # getattr
    # res = getattr(foo_obj, 'x')
    # print(res)  # 10
    
    # 若属性不存在,则返回默认值
    # res = getattr(foo_obj, 'z', '默认值')
    # print(res)  # 默认值
    
    # setattr
    # 为foo_obj设置一个属性z,值为30
    # setattr(foo_obj, 'z', 30)
    # print(hasattr(foo_obj, 'z'))  # True
    
    
    # delattr
    # delattr(foo_obj, 'x')
    # print(hasattr(foo_obj, 'x'))  # False

    实例

     反射应用:    将用户交互的结果反射到具体的功能执行
    class FileControl:
        def run(self):
            while True:
                # 让用户输入上传或下载功能的命令:
                user_input = input('请输入 上传(upload) 或 下载(download) 功能:').strip()
                # 通过用户输入的字符串判断方法是否存在,然后调用相应的方法
                if hasattr(self, user_input):
                    func = getattr(self, user_input)
                    func()
                else:
                    print('输入有误!')
    
        def upload(self):
            print('文件正在上传...')
    
    
        def download(self):
            print('文件正在下载...')
    
    
    file_control_obj = FileControl()
    file_control_obj.run()
  • 相关阅读:
    Flex 加载资源方式
    java在linux系统下开机启动无法使用sudo命令的原因
    Android SDK 1.5中文版 (Application基础—5)
    还原ORACLE DUMP 的值
    JAVA操作windows共享目录
    [C++] 解释一下m_pfnCreateObject
    Android SDK 1.5中文版 (Application基础—4)
    O7_DICTIONARY_ACCESSIBILITY&REMOTE_OS_AUTHENT
    Android SDK 1.5中文版 (Application基础—3)
    Android SDK 1.5中文版 (Application基础—2)
  • 原文地址:https://www.cnblogs.com/bigbox/p/11960982.html
Copyright © 2011-2022 走看看