python metaclass 基础 name,bases和dict是什么

如果我们要修改__new__,我们会经常看到下面这段代码

class Meta(type):
    def __new__(cls, name, bases, dct):
        return super().__new__(cls, name, bases, dct)

基本是这个格式,一般我们会在__new__里面修改dct。那么他们是什么?

用一个例子解决这个问题。

当你定义一个类的时候:

class Foo(p1, p2):
    v = 'var1'

    def func(self):
         return 'func1'

python大致会把他解析成这样(这里我默认大家理解metaclass是做什么的)

name = 'Foo'
base = (p1, p2)
def func(self):
    return 'func'
dct = {'v': 'var1', 'func': func}

Foo = type( name, base, dct )

这里的对应关系已经很明显了。

name就是类名,这里是Foo

base是要继承的父类,(Base1,Base2)

dict包含了里面所有的方法和变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值