我试图用一个关键字参数扩展一个方法,同时保持对方法签名的其余部分保持公正;我只想传递它。尝试0:
class SomeSuperclass(object):
pass # in reality: some implementation for some_method
class SomeClass(SomeSuperclass):
def some_method(self, my_kwarg=42, *args, **kwargs):
super(SomeClass, self).some_method(*args, **kwargs)
do_something_interesting_with(my_kwarg)
SomeClass().some_method('arg 0', 'arg 1', some_kwargs=5, my_kwarg=8)
这不起作用:
^{pr2}$我完全理解为什么上面的方法不起作用,但我正在寻找一个好的方法使它发挥作用。这是我目前(丑陋的)解决方法:
class SomeClass(SomeSuperclass):
def some_method(self, *args, **kwargs):
my_kwarg = kwargs.get('my_kwarg', 42)
if 'my_kwarg' in kwargs:
del kwargs['my_kwarg']
super(SomeClass, self).some_method(*args, **kwargs)
do_something_interesting_with(my_kwarg)
那是每夸克3行粗汽油。。。在
您可以使用
{}.pop()
将3行cruft转换为1:我将使用^{} ,如下所示:
运行时,会打印出:
^{pr2}$相关问题 更多 >
编程相关推荐