You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

子类如何覆盖基类元类的关键字参数,使首次执行用新值

问题:替换元类执行时的初始关键字参数

当ChildClass继承BaseClass时,BaseMetaClass.__new__(...)会运行两次:第一次使用关键字参数"foo",第二次使用"bar"。能否在首次执行前就将"foo"替换为"bar"?我不介意它运行两次,但首次执行时必须使用"bar"这个值。

class BaseMetaClass(type):
    def __new__(cls, name, bases, attrs, *args, **kwargs):
        # do something with attrs here
        return super().__new__(cls, name, bases, attrs)

class BaseClass(keywordarg="foo", metaclass=BaseMetaClass):
    pass

class ChildClass(BaseClass, keywordarg="bar"):
    pass

尝试该操作的原因:
我正在研究如何覆盖/操作一个用于注册服务的装饰器。

已尝试的额外方法:

  • 试过__prepare__方法,但未得到预期结果。
  • 尝试过以下写法,但属于无效语法:
    class ChildClass(BaseClass(keywordarg="bar")):
    

内容的提问来源于stack exchange,提问作者Moritz Hartmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:32:33