Python-将类标题中的位置参数传递给元类

时间:2018-09-27 07:45:53

标签: python parameter-passing metaprogramming

语法上不允许在关键字参数之后使用格式*(1, 2, 3)传递位置参数。这段代码:

class Meta(type):
    def __new__(meta, *args, **kwargs):
        return super().__new__(meta, *args)

class A(metaclass=Meta, sandwich='tasty', *(10,)): pass

给我一​​个错误:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

为什么位置参数与超类列表混合在一起? 我认为Python应该能够处理这种特殊情况,因为这样的实现会强制元类用户以仅关键字的方式传递参数,并且这种接口选择会被元类程序员所取代。

0 个答案:

没有答案