语法上不允许在关键字参数之后使用格式*(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应该能够处理这种特殊情况,因为这样的实现会强制元类用户以仅关键字的方式传递参数,并且这种接口选择会被元类程序员所取代。