Python之反射


反射介绍

Python是动态语言,而反射机制被视为动态语言的关键。(动态语言,属性赋值是不需要指定类型,当语句执行时程序会自动判断属性的类型。)

反射指的是在程序运行过程中以“动态”获取对象的信息(方法和属性)。

  • 对于任意一个类,都可以知道这个类的所有属性和方法;
  • 对于任意一个对象,都能够调用它的所有属性和方法;

(简单理解就是通过对象或类+”.”能够显示出这个对象或类的所有属性和方法)

反射就是通过字符串的形式去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作成员(查找/获取/删除/添加)。

实现反射机制的步骤

  1. 先通过dir()内置函数,查看出某一个对象可以.出哪些属性来;

    dir(obj)
  2. 可以通过dir()获取到的字符串映射到真正的属性上,得到属性值;

    使用四个内置函数,通过上面获取到的字符串操作属性值

    • hasattr() 判断实例是否存在字符串对应的属性及方法

      hasattr(obj,'name')
    • getattr() 获取字符串对应的属性/方法

      getattr(obj,'name')
    • setattr() 为字符串对应的已存在的属性设置内容

      setattr(obj,'name','laobai')
    • delattr() 删除实例中字符串对应的属性

      delattr(obj,'name')

示例

class Ftp:

    def upload(self):
        print('正在执行上传功能。。。')

    def download(self):
        print('正在执行下载功能。。。')

    def interactive(self):
        method = input(">>>: ").strip()

        if hasattr(self,method):
            getattr(self,method)()
        else:
            print('输入的指令不存在')

obj = Ftp()
obj.interactive()

执行结果:

输入不存在的属性

>>>: web
输入的指令不存在

输入存在的属性

>>>: upload
正在执行上传功能。。。

文章作者: 老百
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 老百 !
 上一篇
XPath详解 XPath详解
XPath即为XML路径语言(XML Path Language),是一门在XML/HTML文档中查找信息的语言,可以用在XML/HTML文档中对元素和属性进行遍历。
2022-10-22
下一篇 
Python之面向对象编程 Python之面向对象编程
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法。Python就是一种面向对象的语言,支持面向对象编程,在其内部,一切都被视作对象。
2022-10-15
  目录