[IronPython] Problem inheriting from C# abstract base class with overloaded constructors
Mark Traudt
mtraudt at alum.mit.edu
Thu Dec 4 02:48:50 CET 2008
If I create an abstract base class in C# that has overloaded constructors,
and then subclass from this in IronPython, then I am unable to call the
non-default base class constructor from the __new__ method in the subclass.
If I try, I get the result shown after the code sample.
Interestingly, if I change the base class to not be abstract and to have
public constructors (both changes are required) then my IronPython script
works fine.
Is this a bug? If not, then am I doing something wrong, or is this not
supported for some reason?
I reproduced this with IronPython-1.1.2 and IronPython-2.0B5.
*** OneOff.cs ***
namespace Test
{
public abstract class Foo
{
protected Foo()
{}
protected Foo(int a)
{
a_ = a;
}
public override string ToString()
{
return "Foo: " + a_;
}
private int a_;
}
}
*** OneOff.py ***
import clr
clr.AddReferenceToFile("OneOff.dll")
from Test import *
class Bar(Foo):
def __new__ (cls, a=0):
return Foo.__new__(cls, a)
print Bar()
print Bar(42)
*** Results ***
Traceback (most recent call last):
File C:\dev\OneOff\IronPython\OneOff.py, line 10, in
File C:\dev\OneOff\IronPython\OneOff.py, line 8, in
File , line 0, in DefaultNew##15
TypeError: default __new__ does not take parameters
--
View this message in context: http://www.nabble.com/Problem-inheriting-from-C--abstract-base-class-with-overloaded-constructors-tp20804327p20804327.html
Sent from the IronPython mailing list archive at Nabble.com.
More information about the Ironpython-users
mailing list