Dino Viehland wrote:
You need to override and call the base __new__ instead of __init__. .NET has a
simpler construction model than Python does and __new__ is what best
corresponds to .NET constructors.
class Derived(Test.Base):
def __new__(cls, i):
return Test.Base.__new__(cls, i)
d = Derived()
Won't that still blow up? What will .NET use for i in the constructor if
you don't provide an argument?
Michael
From: users-boun...@lists.ironpython.com
[mailto:users-boun...@lists.ironpython.com] On Behalf Of Zach Crowell
Sent: Friday, August 21, 2009 4:39 PM
To: users@lists.ironpython.com
Subject: [IronPython] Constructors & inheriting from standard .NET classes
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)
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com