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

Reply via email to