私は困惑しています。キーワード パラメータを気にしないサブクラスを作成しようとしています。それらをすべてそのままスーパークラスに渡し、コンストラクタに必要な 1 つのパラメータを明示的に設定します。これが私のコードの簡略版です:
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)