[IronPython] Overriding .NET methods within IronPython

2009-10-23 Thread Brian Curtin
Hey list,

I think I got this right, and it seems to work, but I just feel like there
is probably a better way to override a method in IP. Some time spent
googling doesn't bring anything up except for IP/C# code examples containing
the override keyword. For example, I want to override the Form class' OnLoad
method, so I wrote a decorator to do so.

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

def override(method):
def inner(*args):
base = super(Form, args[0]) #args[0] is frm instance
base_method = getattr(base.__thisclass__, method.__name__)
method(*args) #call our method first
return base_method(*args)
return inner

@override
def OnLoad(self, evt_args):
print evt_args

It doesn't do anything snazzy - just prints out the EventArgs, then calls
the base class Form.OnLoad.

Any thoughts?

Brian
___
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Overriding .NET methods within IronPython

2009-10-23 Thread Brian Curtin
I'm not sure what I was doing wrong when this clearly simpler way wasn't
working, but this pretty much answers my question: do this -
Form.OnLoad(self, evt_args)

Sorry for the noise.

On Fri, Oct 23, 2009 at 13:45, Brian Curtin brian.cur...@gmail.com wrote:

 Hey list,

 I think I got this right, and it seems to work, but I just feel like there
 is probably a better way to override a method in IP. Some time spent
 googling doesn't bring anything up except for IP/C# code examples containing
 the override keyword. For example, I want to override the Form class' OnLoad
 method, so I wrote a decorator to do so.

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

 def override(method):
 def inner(*args):
 base = super(Form, args[0]) #args[0] is frm instance
 base_method = getattr(base.__thisclass__, method.__name__)
 method(*args) #call our method first
 return base_method(*args)
 return inner

 @override
 def OnLoad(self, evt_args):
 print evt_args

 It doesn't do anything snazzy - just prints out the EventArgs, then calls
 the base class Form.OnLoad.

 Any thoughts?

 Brian

___
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Overriding .NET methods within IronPython

2009-10-23 Thread Shri Borde
See the section on Overriding methods in 
http://ironpython.codeplex.com/SourceControl/changeset/view/60398#1011839 
(IronPython_Main\Doc\dotnet-integration.rst) for more details on overriding, 
like dealing with ref params. We are working on making the info easily 
accessible, but for now, you can browse the content from the rst file.

From: users-boun...@lists.ironpython.com 
[mailto:users-boun...@lists.ironpython.com] On Behalf Of Brian Curtin
Sent: Friday, October 23, 2009 11:53 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Overriding .NET methods within IronPython

I'm not sure what I was doing wrong when this clearly simpler way wasn't 
working, but this pretty much answers my question: do this - Form.OnLoad(self, 
evt_args)

Sorry for the noise.
On Fri, Oct 23, 2009 at 13:45, Brian Curtin 
brian.cur...@gmail.commailto:brian.cur...@gmail.com wrote:
Hey list,

I think I got this right, and it seems to work, but I just feel like there is 
probably a better way to override a method in IP. Some time spent googling 
doesn't bring anything up except for IP/C# code examples containing the 
override keyword. For example, I want to override the Form class' OnLoad 
method, so I wrote a decorator to do so.

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

def override(method):
def inner(*args):
base = super(Form, args[0]) #args[0] is frm instance
base_method = getattr(base.__thisclass__, method.__name__)
method(*args) #call our method first
return base_method(*args)
return inner

@override
def OnLoad(self, evt_args):
print evt_args

It doesn't do anything snazzy - just prints out the EventArgs, then calls the 
base class Form.OnLoad.

Any thoughts?

Brian

___
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com