我正在尝试将 IronPython 中的 .NET RoutedUICommand 子类化。只要我不将任何参数传递给init函数,我就可以做到这一点。一旦我这样做,我就会得到一个 ArgumentTypeException Instance() 最多需要 5 个参数(给定 2 个)。我读过有一个 .overloads 字典,但我如何在init函数上使用它?这是我的代码:
class R(RoutedUICommand):
def __init__(self, win,*args, **kwargs):
super(R, self).__init__(*args, **kwargs)
self.win = win
self.keyGesture = KeyGesture(Key.X,ModifierKeys.Control)
self.Exit = RoutedUICommand('E_xit','Exit',clr.GetClrType(RoutedUICommand),InputGestureCollection([self.keyGesture]))
self.ebinding = CommandBinding(self.Exit,self.ExitExecute,self.ExitCanExecute)
self.win.CommandBindings.Add(self.ebinding)
r = R(win)
RoutedUICommand 具有三个重载。如何使用 .overloads 将我自己的参数添加到我的类中?
如果我尝试实现新功能:
def __new__(self,win):
return super(R,self).__new__(self)
我收到 MissingMemberException:对象没有属性“ExitExecute”
有没有人可以遵循一些想法?
编辑:
我发现了如何做到这一点:
def __new__(self,win,*args,**kwargs):
return super(R,self).__new__(self,*args,**kwargs)
成功了。