You are correct in that __new__ methods map to the .NET ctor (both __new__ and 
the ctor can only be run once, while __init__ can be called an arbitrary number 
of times).  Of course someone can construct a type from C# which has particular 
__init__ or __new__ semantics but you won't run into that in Winforms.

The only interesting thing about not calling __init__ is if multiple 
inheritance starts coming into the picture.  Then you might want to call your 
super's __init__ to ensure everyone gets __init__ run.  Unfortunately doing 
super(...).__init__ to make this work seems to be questionable as it may open 
up its own set of issues.

But there's certainly no need to Form.__init__.
________________________________________
From: [EMAIL PROTECTED] [EMAIL PROTECTED] On Behalf Of Michael Foord [EMAIL 
PROTECTED]
Sent: Wednesday, March 14, 2007 4:25 PM
To: Discussion of IronPython
Subject: [IronPython] Initialisation of .NET Subclasses

Hello all,

I'm wondering about best practise when subclassing Windows Forms
controls. I have a vague memory of hearing that initialisation is done
in the '__new__' methods of .NET controls, so that '__init__' overrides
*need not* call up to their base class. Is this correct, or was I
hallucinating ?

In other words, is the following ok :

class MainForm(Form):
    def __init__(self):
        pass

Or should I be doing :

class MainForm(Form):
    def __init__(self):
        Form.__init__(self)

?

All the best,

Michael Foord
http://www.voidspace.org.uk/ironpython/
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to