元编程(Meta Programming)又叫超编程,是指某类计算机程序的编写,这类计算机程序的编写或者超重其他程序(或者自身)作为他们的数据,或者在运行完成部分本应该在编译时完成的工作。多数情况下,与手工编译全部代码相比,程序员可以获得更高的工作效率,或者给与程序员更大的灵活度去处理新的情形而无需重新编译。
编写元程序的语言称之为元语言。被操作的程序的语言称之为“目标语言”。一门编程语言可以同时也是自身的元语言的能力称之为“反射”或者“自反”。作为胶水语言的python,对各种语言的库的支持(ctypes、js2py等),就是元编程应用的很好实例。
元编程是一种可以将程序当作数据来操作的技术,元编程能够读取,生成,分析或转换其他的程序代码,甚至可以在运行时修改自身。元编程存在的目的,就是多提供了一个抽象层次。
在python中,元编程实现通常的手段有:
- 预定义方法
class A(object):
def __init__(self, o):
self.__obj__ = o
def __getattr__(self, name):
if hasattr(self.__obj__, name):
return getattr(self.__obj__, name)
return self.__dict__[name]
def __iter__(self):
return self.__obj__.iter__()
l = []
a = A(l)
for i in range(101