在我的IronPython项目中,我有一个名为Formbox的类,定义如下:
class Formbox(TextBox, Widget):
... variables that I treat as static go here ...
def __init__(self, parent, size, position, placeholder_text, formtype=str):
TextBox.__init__(self)
Widget.__init__(self, parent, size, position)
... rest of the init ...
其中TextBox是.NET系统.Windows.Forms.TextBox类。你知道吗
每当我尝试实例化一个Formbox时,例如:
LOAD_TEXTBOX = Formbox(LOAD_AREA, Size(20,20), Point(50,50), "Path to file...")
发生以下情况:
TypeError: Formbox() takes exactly 1 argument (5 given)
如果去掉ex1中传递的所有参数,将参数减少为隐含的self,则会出现以下情况:
TypeError: __init__() takes at least 5 arguments (1 given)
如果有帮助,Widget类如下所示:
class Widget:
def __init__(self, parent, size, position):
"""
:type parent: System.Windows.Forms.Control
:type size: System.Drawing.Size
:type position: System.Drawing.Point
"""
self.parent = parent
self.Size = size
self.Location = position
当然,将继承自的类(Widget或TextBox)减少为一个,会导致Formbox正确实例化。ex1工作得非常好,直到我将Widget添加到超类。你知道吗
我的问题是,为什么这些错误会被扔到我身上,如何解决它,使Formbox类同时继承Widget和TextBox类?你知道吗
p.S.我认为这是我的一个python错误,而不是IronPython的限制
p.p.S为了简洁起见,例1中的大多数论点都被缩短和简化了。
我不能很容易地复制这个,但是我怀疑你遇到了一个混合的情况。下面的代码片段在python2.6.5、2.7.6和2.7.14中运行良好。你知道吗
我怀疑
TextBox
是object
的一个子类(如第9行所示)。这应该不会引起问题,因为您直接调用初始值设定项,而不是使用super(Formbox, self).__init__(...)
。运行此示例将产生以下输出:Python中的多重继承是非常好的。读一读这个主题的Raymond Hettinger's article。这是如何在Python中使用多重继承的简明说明。你知道吗
在本例中,我怀疑在
TextBox
中发生了一些改变类创建的事情。你知道吗相关问题 更多 >
编程相关推荐