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包含了里面所有的方法和变量。

猜你喜欢

转载自blog.csdn.net/wwx890208/article/details/80747377
今日推荐