zoukankan      html  css  js  c++  java
  • 反射

    反射:

    反射就是通过字符串映射到对象的属性,python的一切事物都是对象(都可以使用反射)

    1,hasattr(object,name) # 判断object中有没有一个name字符串对应的方法或属性

    2,getattr(object, name, default=None) 获取object中有没有对应的方法和属性

    3,setattr(x, y, v) 设置对象及其属性

    4,delattr(x, y) 删除类或对象的属性

    实例一:

    class Foo:
        def __init__(self,name):
            self.name = name
    
    
        def  get(self):
            print('aaa')
    
    f1 = Foo('alex')
    
    if hasattr(f1,'a'):     #判断Service这个类里面的方法,有没有字符串a这样命名的方法,
                            # f1是实例化的对象,通过hasattr去反射Service类里面有没有a方法
        func = getattr(f1,'a') #这里a为字符串
        func()
    else:
        print('没有')
    

    实例二:

    class Service:
        def run(self):
            while True:
                cmd = input('>>>:').strip()  #接收用户输入
                if hasattr(self,cmd):  #判断,在进行用户交互时,hasattr后面的cmd不是字符串了!!!
                    func = getattr(self, cmd)
                    func()
    
        def get(self):
            print('get.....')
    
        def put(self):
            print('put..........')
    
    obj = Service()
    obj.run()
    #如果cmd接收到的不是Service类里面的方法,就会一会重复要求输入
    # 如果cmd接收到的是get,put方法,就会打印get,put里对应的信息
    
  • 相关阅读:
    ES6 Promise 用法转载
    移动端滚动性能优化
    Python之禅
    Day01~15
    Python
    第一章 Java起源
    IMP-00009: 导出文件异常结束 imp
    浏览器访问网页的详细内部过程
    数据库连接池
    连接数据库 六大步骤
  • 原文地址:https://www.cnblogs.com/sunny7/p/9715856.html
Copyright © 2011-2022 走看看