是否可以使用inspect.getargspec()
或任何其他选项从具有多个父类的对象中检索所有参数?
示例:
import inspect
class One:
def __init__(self,a):
self.a = a
class Two:
def __init__(self,b):
self.b = b
class Three(One, Two):
pass
print(inspect.getargspec(Three.__init__))
相反:
ArgSpec(args=['self', 'a'], varargs=None, keywords=None, defaults=None)
作为输出,我正在寻找方法:
['self', 'a','b']
为args。
答案 0 :(得分:2)
您可能需要先阅读python Mixins。
通常,使用具有冲突名称的两个类来使用多重继承是非常糟糕的形式。最左边的类总是优先考虑,导致使用覆盖方法的其他类的方法有些时髦。
如果你想要一个具有可变数量的args / kwargs的对象,你应该只指定它。
class Foo(object):
def __init__(self, **kwargs):
for k, v in kwargs.iteritems():
setattr(self, k, v)
答案 1 :(得分:2)
args = ['self']
for C in Three.__mro__:
if '__init__' in C.__dict__:
args += inspect.getargspec(C).args[1:]