首页 > 解决方案 > 元类不会被继承

问题描述

在以下代码中:

class Meta(type):
    def __new__(cls, name, bases, attrs):
        print(name)
        return type(name, bases, attrs)

class A(object, metaclass=Meta):
    def do_complex_task(self):
        pass

class B(A):
    def do_minor_task(self):
        pass

我希望看到两者AB打印出来,但我看到元类应用于A唯一的。我该如何解决这个问题?我的目标是预处理 的所有孩子的字段A,并且我想省略metaclass=Meta每个孩子的输入。

标签: pythonpython-3.xmetaclass

解决方案


自从您返回后type(name, bases, attrs),您将获得一个类型的对象,type而不是Meta. 您可以通过打印来检查这一点A.__class__。相反,您应该返回:

return super().__new__(cls, name, bases, attrs)

推荐阅读