[IronPython] **kwargs and __getattr__ handling in csharp functions and classes?

Dino Viehland dinov at microsoft.com
Tue Apr 14 17:16:44 CEST 2009


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, 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




More information about the Ironpython-users mailing list