你
Foo.__init__()不会 不 支持任意关键字参数。您可以添加
**kw其签名以使其接受它们:
class Foo(object): def __init__(self, value1, value2, **kw): print 'I think something is being called here' print value1, value2, kw
关键字参数仅与关键字名称完全匹配的参数匹配;您的
Foo方法将需要具有
Python和
stack关键字参数。如果找不到匹配的关键字参数,但
**kw参数
为 ,则将它们收集在该参数中。
如果您的子类知道父类仅具有 位置 参数,则可以随时传递位置:
class MyFoo(Foo): def __init__(self, *args, **kwargs): # do something else, don't care about the args print args, kwargs while len(args) < 2: args += kwargs.popitem() super(MyFoo, self).__init__(*args[:2])
现在您 必须 在其中传递两个或多个参数才能
MyFoo使调用正常工作。
本质上,
super().methodname返回对bound方法的引用;从那里开始,这是一个 普通 方法,因此您需要传入 任何
方法都可以接受的参数。如果您的方法不接受关键字参数,则会出现异常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)