我很困惑。我正在尝试创建一个不关心任何关键字参数的子类——只将它们按原样传递给超类,并显式设置构造函数所需的一个参数。以下是我的代码的简化版本:
class BaseClass(object):
def __init__(self, required, optional=None):
pass
def SubClass(BaseClass):
def __init__(self, **kwargs):
super(SubClass, self).__init__(None, **kwargs)
a = SubClass(optional='foo') # this throws TypeError!?!??
这个失败了
leo@loki$ python minimal.py
Traceback (most recent call last):
File "minimal.py", line 9, in <module>
a = SubClass(optional='foo')
TypeError: SubClass() got an unexpected keyword argument 'optional'
当方法具有
**kwargs
时,它如何抱怨意外的关键字参数?(Ubuntu上的python 2.7.3)
最佳答案
def SubClass(BaseClass):
是函数,而不是类。没有错误,因为
BaseClass
可能是参数名,并且允许嵌套函数。语法很有趣,不是吗?class SubClass(BaseClass):
关于python - 在构造函数中使用** kwargs时出现意外的关键字参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13897896/