У меня есть класс B
, определенный множественным наследованием.
class A:
def __init__(self, x, y):
self.x = x
self.y = y
class AMixin:
def __init__(self, *args, **kwargs):
# do stuff
super().__init__(*args, **kwargs)
class B(AMixin, A):
pass
В основном класс mixin переопределяет метод __init__
, но с точки зрения пользователей, использующих класс B
, подпись класса B
такая же, как A
.
Поскольку я использую *args
и **kwargs
в классе mixin, то инициализация B
основана на конструкторе A
(функционально).
Однако, линтеры этого не узнают, и они подумают, что подпись B
- args
и kwargs
, что бесполезно.
Я думаю, что это та же проблема, что и inspect.signature
возвращает подпись A
(вместо AMixin
) при проверке B
, но теперь вот что я получаю, когда проверяю B
:
from inspect import signature
signature(B).parameters.keys()
# odict_keys(['args', 'kwargs'])
Как заставить его вернуть ['x', 'y']
вместо этого?