python 对元类的理解

什么是元类(metaclass) 元类是类的类,是类的模板 元类的实例为类,正如类的实例为对象

所有的对象都是实例化或者说调用类而得到的(调用类的过程称为类的实例化),比如对象f1是调用Foo类得到的一个实例。 如果一切皆为对象,那么类Foo本质也是一个对象,既然所有的对象都是调用类得到的,那么Foo必然也是调用了一个类得到的,这个类称为元类。

Foo类是type类的一个实例。 用class关键字定义的类本身也是一个对象,负责产生该对象的类称之为元类(元类可以简称为类的类),内置的元类为type, type是Python的一个内建元类,用来直接控制生成类,Python中任何class定义的类其实都是type类实例化的对象。 class关键字在创建类时,必然帮调用了元类Foo=type(...),那调用type时传入的参数有三大组成部分,分别是 1、类名'Foo' 2、基类们(object, ) 3、类的名称空间class_dic,类的名称空间是执行类体代码而得到的 调用元类得到类Foo = type(class_name,class_bases,class_dic) 动态创建类 type可以动态的创建类。 type(类名, 由父类名称组成的元组,包含属性的字典)

 动态添加Foo的属性与实例化行为: 

 

自定义元类:

 

 这样就限制了类的实例化,B所实例化的x,y只能是一百除非改变B类里面的x,y的值

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值