转载:http://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference
元类是类的一种类.元类定义类的行为,就像类定义了类的实例化.类时元类的实例化.
在python中,当你随意对元类调用,最好的方法是通过通过构造一个实际的类. type是python中最常见的元类.type它本身就是个类.他拥有他自己的类型.你在python中不能直接重新创建一个类type的东西,但是python换法子创建.在python中创建自己的元类,你只需要构建一个type的子类.
元类最常作为类的工厂函数使用,当你通过类的调用构建一个类,python通过调用元类创建一个新的类(当它执行'类'的状态).配合标准的__init__和__new__方法,当创建一个类时,元类允许你做一些其他的事,不如通过注册注册一个新的类或替换类一些甚至全部.
当类的statement被执行了,python首先会执行class statement本身.命名空间的结果有class-to-be的属性.元类通过class-to-be(元类被继承)的基类定义.在class-to-be 的__metaclass__属性或者__metaclass__的全局变量.元类通过类实例化调用.
然而,远了实际定义了type这个类.不只是工厂.因此你可以用它做很多东西.比如你可以在元类中定义一个常用的方法.这些元类方法就像他的类方法,他们可以不通过实例化就可以通过类调用,但是他们不能像类方法那样在实例方法中调用.type.__subclasses__()就是一个type元类方法中的一个例子.你可以定义魔法方法,像__add__,__iter__和getattr__补全或改变类的表达
这里有一些例子