问题很简单:我想创建对某个类的“构造函数”的可调用引用。我希望该构造函数具有正确的签名。
答案不只是func = MyClass
,因为它没有签名(并且不是一个功能)。
>>> inspect.signature(MyClass.__call__)
<Signature (*args, **kwargs)>
答案不只是func = MyClass.__new__
,因为它没有签名。
>>> inspect.signature(MyClass.__new__)
<Signature (*args, **kwargs)>
答案不只是func = MyClass.__init__
,因为它返回None并且需要一个self
。
>>> inspect.signature(MyClass.__init__)
<Signature (self, a, b)>
因此,我需要带有__new__
签名的__init__
(但没有自己)。
func = MyClass.???
inspect.signature(func)
<Signature (a, b)>
最简单的方法是什么?
答案 0 :(得分:0)
这对我有用:
class Test():
def __init__(self,a,b):
print(a)
Test("hello","world")
func = Test.__call__
func("foo","bar")
(* args,** kwargs)与(a,b)非常相似,其中* args是必需参数的数组,而** kwargs是可选参数的字典。因此,您可以正常调用它,语法糖会将数组更改为参数。