python - 元类不会被继承
问题描述
在以下代码中:
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
我希望看到两者A
并B
打印出来,但我看到元类应用于A
唯一的。我该如何解决这个问题?我的目标是预处理 的所有孩子的字段A
,并且我想省略metaclass=Meta
每个孩子的输入。
解决方案
自从您返回后type(name, bases, attrs)
,您将获得一个类型的对象,type
而不是Meta
. 您可以通过打印来检查这一点A.__class__
。相反,您应该返回:
return super().__new__(cls, name, bases, attrs)
推荐阅读
- java - SpringBoot - 糟糕的错误处理:过度广泛的抛出
- arrays - 为什么 scanf 不将整数存储在正确的数组位置?
- java - java.lang.NoSuchMethodError: 'java.lang.String org.slf4j.helpers.Util.safeGetSystemProperty(java.lang.String)'
- excel - 如果存在则复制工作表,如果不存在则创建新文件
- flutter - 如何在颤动中隐藏MS Edge中密码输入的眼睛图标?
- angular - 子组件事件调用错误的父组件
- c++ - 在 firebase 函数中包含 bin 文件
- sql - 与 SQL 中的条件作斗争
- reactjs - getStaticPaths 用于在 nextjs 中捕获所有路由 [[...Id]].js 的动态路由
- c# - 在新行中按日期添加分组中的运行总和