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里对应的信息
    
  • 相关阅读:
    python面向对象编程(1)——基本概念,术语,self,构造器
    django-中间件
    集合
    深入字典
    django使用小贴士
    自动化发送微信
    django-模板继承
    SMTP发送邮件
    git的使用
    django-csrf攻击
  • 原文地址:https://www.cnblogs.com/sunny7/p/9715856.html
Copyright © 2011-2022 走看看