我从 __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 中的类能否以某种方式接受关键字参数?也许需要一个特殊的元类?
最佳答案
Can classes in Python 3 somehow accept keyword arguments?
是的。 class
语句中除 metaclass
之外的任何关键字参数都传递给元类。如果指定了 metaclass
参数,则它被用作元类;否则,元类是 type
。参见 PEP 3115了解更多详情。
关于python - Python 3 中的类 "keyword arguments",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21360224/