Zach Crowell wrote:
I am unable to inherit from .NET classes which do not define a
parameterless constructor. Is this expected behavior? Is there
another way to make this inheritance work?
Here's a simple case.
using System;
namespace Test
{
public class Base
{
public Base(int i)
{
}
}
}
*import *clr
clr.*AddReference*('Test')
*import *Test
*class **Derived*(Test.Base):
*def **__init__*(self):
pass
d = *Derived*()
Traceback (most recent call last):
File "d:\tmp\class.py", line 9, in d:\tmp\class.py
TypeError: Derived() takes exactly 2 arguments (1 given)
When you inherit from a .NET type and wish to provide an alternate
constructor you need to override __new__ instead of or as well as __init__.
*class **Derived*(Test.Base):
def __new__(cls):
return Test.Base.__new__(cls, 2)
*def **__init__*(self):
pass
Michael
------------------------------------------------------------------------
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com