我有一个由多重继承定义的类。
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类覆盖了
B
方法,但是从用户使用类__init__
的角度来看,类B
的签名与B
相同。由于我在MIXIN类中使用了
A
和*args
,所以**kwargs
的初始化是基于B
的构造函数(功能性)。然而,林特并不知道这一点,他们会认为
A
的签名是B
和args
,这是没有帮助的。我认为这和让
kwargs
在检查inspect.signature
时返回A
的签名(而不是AMixin
)是一个问题,但现在我检查B
时得到的是:from inspect import signature
signature(B).parameters.keys()
# odict_keys(['args', 'kwargs'])
如何使它返回
B
? 最佳答案
b__init__
类继承自AMixin
类。即使AMixin
正在用super()
和**args
调用**kwargs
,它的__init__
函数也可以根据需要执行任何逻辑linter扩展函数内部运行的内容是没有意义的。
关于python - 使用Mixin时返回基类的签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54029465/