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: [email protected] [mailto:[email protected]] On Behalf Of Zach Crowell Sent: Friday, August 21, 2009 4:39 PM To: [email protected] 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 [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
