我在__build_class__
:
__build_class__(func, name, *bases, metaclass=None, **kwds) -> class
Internal helper function used by the class statement.
引起我兴趣的部分是**kwds
部分。类定义可以采用关键字参数吗?我试过了,但是我得到了一个非常奇怪的错误:
>>> class Test(a=1):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type() takes 1 or 3 arguments
这是什么交易? Python 3中的类可以以某种方式接受关键字参数吗?也许需要一个特殊的元类?
答案 0 :(得分:3)
Python 3中的类可以以某种方式接受关键字参数吗?
是。除class
之外的metaclass
语句中的任何关键字参数都将传递给元类。如果指定了metaclass
参数,则将其用作元类;否则,元类是type
。有关详细信息,请参阅PEP 3115。