Обрабатываются ли как-то специально аргументы ключевого слова в унаследованных методах?
Когда я вызываю метод экземпляра с ключевыми словами из класса, в котором он определен, все идет хорошо. Когда я вызываю его из подкласса, Python жалуется на слишком много переданных параметров.
Вот пример. «Простые» методы не используют аргументы ключевого слова, и наследование работает нормально (даже для меня :-) Методы «KW» используют аргументы ключевого слова, и наследование больше не работает... по крайней мере, я не вижу разница.
class aClass(object):
def aSimpleMethod(self, show):
print('show: %s' % show)
def aKWMethod(self, **kwargs):
for kw in kwargs:
print('%s: %s' % (kw, kwargs[kw]))
class aSubClass(aClass):
def anotherSimpleMethod(self, show):
self.aSimpleMethod(show)
def anotherKWMethod(self, **kwargs):
self.aKWMethod(kwargs)
aClass().aSimpleMethod('this')
aSubClass().anotherSimpleMethod('that')
aClass().aKWMethod(show='this')
печатает this
, that
и this
, как я и ожидал. Но
aSubClass().anotherKWMethod(show='that')
бросает:
TypeError: aKWMethod() takes exactly 1 argument (2 given)