就像元数据是有关数据的数据一样,元编程就是编写用于操纵程序的某些程序。人们普遍认为,元程序就是生成其他程序的某些程序,但范式更加广泛。所有旨在自我读取、分析、转换或修改的程序都是元编程的范例。例如:
领域特定语言 (DSL)
解析器
解释器
编译器
定理证明器
术语重写器
本教程探究 Python 中的元编程。本文通过考察 Python 的特性,更新您的 Python 知识,让您能够更深入地理解本教程中的概念。同时,还说明了 Python 中的类型为何会比只返回对象的类更重要。之后,讨论了在 Python 中进行元编程的方法,以及元编程如何简化某些任务。
稍作反思
如果您使用 Python 进行编程已经有段时间,可能知道一切都是对象,而类创建了这些对象。但是,如果一切都是对象(类也是对象),那么谁来创建这些类呢?这就是我要解答的问题。
我们来验证一下上述说法是否正确:
因此,在对象上调用的函数返回该对象的类。
如果将类传递给,它就会返回,否则即返回。因为不是类(它是类的实例),所以 inspect.isclass 返回。又因为返回的类,所以返回:
在 Python 3 中,所有类在默认情况下从类继承。现在,一切都说得通了。但又该如何解释?我们来开开眼:
发现了吗?事实证明,一开始的说法(一切都是对象)并不完全正确。下面是更准确的说法:
除 type 之外,Python 中的一切都是对象,它们要么是类的实例,要么是元类的实例。
验证这一点:
现在,我们知道了实例是实例化的类,而类是元类的实例。
领取专属 10元无门槛券
私享最新 技术干货