python元类的作用_什么是Python元类有用?

元类是不可或缺的,如果你想有类对象(类对象的实例)配备“特殊的定制行为”,因为对象的行为取决于对象类型的特殊方法,类对象的类型是,完全,元类的同义词。

例如,如果你想要一个类对象X,“打印X”发出“时间现在是上午8:46”(在上午8:46,或更一般地,当前时间),这必须意味着类型(x) AKA X的元类)有一个特殊的自定义__str__方法 – 并且类似地(与各种适用的特殊方法),如果你想给表达式如XY的意义,其中X和Y都是类对象,或X [23](其中X,同样,是一个类对象),等等。

大多数其他定制任务现在(在Python 2.6或更好)更容易实现与类装饰器,它可以改变一个类对象在类语句结束后。还有一些情况,这是不可行的,因为如果他们有任何效果(例如,设置或改变__slots__),必须很早就进行更改。

在Python 3中,元类获得一点额外的有用性:元类现在可以指定要在类语句的主体执行期间填充的映射对象(默认情况下,它是一个正常的dict)。这允许类主体中的名称绑定的顺序被保留和使用(当正常的dict失去顺序时),当类必须具有以特定顺序的“fields”时,这有时是好的(例如,将1:1映射到一个C结构,一个CSV文件或DB表中的行等等) – 在Python 2. *这必须冗余指定(通常有一个额外的类属性是一个序列,因此保持顺序) Python 3元类的特性允许删除冗余。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值