python中的元类_python中元类是什么?

转载: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__补全或改变类的表达

这里有一些例子f4025a6863e8c36e6878264c2d689d2a559da15a.png

4ee8e6f160e2ac5b10835fa679f5c30336481317.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值