[IronPython] **kwargs and __getattr__ handling in csharp functions and classes?
Curt Hagenlocher
curt at hagenlocher.org
Tue Apr 14 21:04:16 CEST 2009
No, that's the right class. Apparently, it's been changed a bit since ~late
October when we branched off the 2.0 source.
On Tue, Apr 14, 2009 at 11:58 AM, Alex News <anleewxs at gmail.com> wrote:
> Well I am either suffering from severe user error, or it is not in the
> suggested locations. The best I could find was
> Microsoft.Scripting.Actions.Dynamic. It implements IDynamicObject.
> It does not have the aforementioned TryGetMember function to override,
> but does have a GetMember function to override.
>
>
> On Tue, Apr 14, 2009 at 2:31 PM, Dino Viehland <dinov at microsoft.com>
> wrote:
> > I think it might be just “Dynamic” in 2.0.
> >
> >
> >
> > From: users-bounces at lists.ironpython.com
> > [mailto:users-bounces at lists.ironpython.com] On Behalf Of Curt
> Hagenlocher
> > Sent: Tuesday, April 14, 2009 11:05 AM
> > To: Discussion of IronPython
> > Subject: Re: [IronPython] **kwargs and __getattr__ handling in csharp
> > functions and classes?
> >
> >
> >
> > It should be Microsoft.Scripting.DynamicObject in 2.0.
> >
> > On Tue, Apr 14, 2009 at 11:02 AM, Alex News <anleewxs at gmail.com> wrote:
> >
> > Current IronPython = 2.01? I have Microsoft.Scripting.Core
> > referenced, and can't find DynamicObject. There is an
> > Microsoft.Scripting.Actions.IDynamicObject, and a
> > Microsoft.Scripting.Runtime.IOldDynamicObject. I'm sure I'm missing
> > something very basic.
> >
> > We are using .net 2.0.50727 SP1
> >
> >
> >
> > On Tue, Apr 14, 2009 at 12:12 PM, Curt Hagenlocher <curt at hagenlocher.org
> >
> > wrote:
> >> In current versions of IronPython, DynamicObject is in
> >> Microsoft.Scripting.Core as Microsoft.Scripting.DynamicObject. In .NET
> >> 4.0
> >> System.Core, the same class will be called System.Dynamic.DynamicObject.
> >> (I
> >> just noticed this naming discrepancy today, and I think we should
> probably
> >> move it to at least Microsoft.Dynamic for the 2.6 release.)
> >>
> >> On Tue, Apr 14, 2009 at 8:31 AM, Alex News <anleewxs at gmail.com> wrote:
> >>>
> >>> Much appreciated, I will give that a try. In what namespace is
> >>> DynamicObject declared? (I assume the required assemblies are already
> >>> referenced if I'm pulling in IronPython).
> >>>
> >>> Thanks again,
> >>> Alex
> >>>
> >>>
> >>> On Tue, Apr 14, 2009 at 11:16 AM, Dino Viehland <dinov at microsoft.com>
> >>> wrote:
> >>> > For kwargs you need to decorate the function w/ a ParamDictionary
> >>> > attribute such as:
> >>> >
> >>> > public void __init__(CodeContext/*!*/ context, object o,
> >>> > [ParamDictionary] IAttributesCollection kwArgs)
> >>> >
> >>> > For __getattr__ IronPython will recognize a special name
> >>> > "GetBoundMember" method such as:
> >>> >
> >>> > using System;
> >>> > using System.Runtime.CompilerServices;
> >>> >
> >>> > public class Foo {
> >>> > [SpecialName]
> >>> > public object GetBoundMember (string name) {
> >>> > return name;
> >>> > }
> >>> > }
> >>> >
> >>> >
> >>> > You can also do "GetCustomMember" which is like __getattribute__.
> But
> >>> > for this one what you really want to do is inherit directly from the
> >>> > DynamicObject class and override TryGetMember. Then it'll work not
> >>> > only w/
> >>> > Python but w/ other DLR based languages as well (e.g. C#, VB.NET<http://vb.net/>
> ,
> >>> > IronRuby,
> >>> > etc...).
> >>> >
> >>> >
> >>> >> -----Original Message-----
> >>> >> From: users-bounces at lists.ironpython.com [mailto:users-
> >>> >> bounces at lists.ironpython.com] On Behalf Of Alex News
> >>> >> Sent: Tuesday, April 14, 2009 7:32 AM
> >>> >> To: users at lists.ironpython.com
> >>> >> Subject: [IronPython] **kwargs and __getattr__ handling in csharp
> >>> >> functions and classes?
> >>> >>
> >>> >> I would like to write some functions and classes in csharp that
> >>> >> interact nicely python. I would like to write a function that can
> >>> >> respond to keyword arguments, and a class that can dynamically
> resolve
> >>> >> __getattr__.
> >>> >>
> >>> >> For the function I tried creating a function that takes a
> >>> >> IronPython.Runtime.PythonDictionary, but did not work. For a class
> I
> >>> >> tried creating a function that have a method __getattr__, but that
> >>> >> failed too.
> >>> >>
> >>> >> I see there is a IronPython.Runtime.PythonFunction and some other
> >>> >> interesting classes in the Runtime, but it is not apparent exactly
> how
> >>> >> I could use them.
> >>> >>
> >>> >> I can, luckily, fudge much of what I want to do by creating small
> >>> >> python classes and functions in python to proxy the values to
> >>> >> underlying csharp classes. However thing would be cleaner if I
> could
> >>> >> do it directly in csharp.
> >>> >>
> >>> >> Thanks in advance for any suggestions.
> >>> >>
> >>> >> Alex
> >>> >> _______________________________________________
> >>> >> Users mailing list
> >>> >> Users at lists.ironpython.com
> >>> >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >>> >
> >>> > _______________________________________________
> >>> > Users mailing list
> >>> > Users at lists.ironpython.com
> >>> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >>> >
> >>> _______________________________________________
> >>> Users mailing list
> >>> Users at lists.ironpython.com
> >>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >>
> >>
> >> _______________________________________________
> >> Users mailing list
> >> Users at lists.ironpython.com
> >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >>
> >>
> > _______________________________________________
> > Users mailing list
> > Users at lists.ironpython.com
> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >
> >
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.ironpython.com
> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >
> >
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20090414/4b136805/attachment.html>
More information about the Ironpython-users
mailing list