可以将关键字参数从
class
关键字将传递给
__prepare__
,
__new__
和
__init__
,但是如果你只覆盖
__新建__
__初始化__
也不是
会抱怨意外的额外争吵。
class Meta(type):
def __new__(cls, name, bases, namespace, **kwargs):
print("Got keywords in __new__: {}".format(kwargs))
return super().__new__(cls, name, bases, namespace)
def __prepare__(name, bases, **kwargs):
print("Got keywords in __prepare__: {}".format(kwargs))
return {}
class Klass(metaclass=Meta, key1=1, key2="fred"): # keywords used here!!!!
pass
你不需要使用
**kwargs
捕获参数的语法。如果愿意,可以显式地命名它们(尽管它们只能作为关键字传递,不能作为位置参数传递)。