[IronPython] How to reference List objects?

Curt Hagenlocher curt at hagenlocher.org
Mon Jun 8 23:01:40 CEST 2009


It indicates a nested class:
class PythonEngine {
    class book {
    }
}

You can definitely interact with BCL generic List classes in this fashion:

>>> from System.Collections.Generic import List
>>> a = List[str]()
>>> a.Add('abc')
>>> a.Add('def')
>>> a
List[str](['abc', 'def'])
>>> a[0]
'abc'
>>> ^Z

There are a number of subtle problems with the output text in the original
report; was this typed in or copy-and-pasted?

On Mon, Jun 8, 2009 at 1:55 PM, Justin Regele <jregele23 at gmail.com> wrote:

> Ah, I see. Would a python list then need to be called the way he is doing
> it, though. Is this a silverlight issue? I am wondering if he can just make
> a python list out of his Book C# class rather than exporting them as a list.
> I am sure there would be some performance issues, so maybe that is the
> reason for this way of doing it.
>
> Wondering about this error:
> System.Collections.Generic.List'1[testapp.PythonEngine+book]
>
> What does the '+' indicate?
>
>
> On Mon, Jun 8, 2009 at 1:32 PM, Michael Foord <fuzzyman at voidspace.org.uk>wrote:
>
>> Justin Regele wrote:
>>
>>> Type Errors where the object is unscriptable means that it does not have
>>> any indices intialized.
>>>
>>> Use the python interactive interpreter to play around with list methods,
>>> and see how they work correctly. This is one of pythons best weapons. if you
>>> don't know what objects are in a module, or what attributes/methods are in a
>>> class type in dir(<module or classname>) and it will spell it out for you.
>>>
>>> you do need to initialize a list before access, however.
>>> so you CANT do this
>>>
>>> x = []
>>> x[0] = 'something'
>>>
>>> you would have to do this(making a list of 10 None objects)
>>> x = [None] * 10
>>> x[0] = 'something'
>>>
>>> OR use the append() method to make the list more like a dynamic array
>>>
>>> x = []
>>> x.append('something')
>>>
>>> this is the python way of doing it, but i'm not sure why you need a .NET
>>> list array.
>>>
>>
>> He is creating the list from C# and making it available to Python code. As
>> far as I can tell he is doing it right, although maybe the fact that his C#
>> book class is private is interfering with it?
>>
>> Michael
>>
>>
>>
>>> On Mon, Jun 8, 2009 at 11:27 AM, Larry Danberger <
>>> larry.danberger at nubium.com <mailto:larry.danberger at nubium.com>> wrote:
>>>
>>>    Hi all,
>>>    I'm new to Python and IronPython, sorry if this is obvious.  I
>>>    haven't found
>>>    answer searching web or in IronPython In Action book...
>>>
>>>    I have embedded IronPython into silverlight app for scripting,
>>>    which is
>>>    working (wow! Btw).  I use scope.SetVariable for dictionaries
>>>    which works as
>>>    expected.
>>>
>>>    However when passing in a list I am unable to access the objects
>>>    within a
>>>    list.
>>>    For the example below when trying
>>>    x = books[0].Name
>>>    I get
>>>    TypeError: 'List[books]' object is unsubscriptable
>>>
>>>    If I do
>>>    x = books
>>>    I get back
>>>    System.Collections.Generic.List'1[testapp.PythonEngine+book]
>>>
>>>    If I do
>>>    Len(books)
>>>    I get back 4.
>>>
>>>    How do I access them individually (by name etc.)?
>>>
>>>    My code looks something like this:
>>>
>>>    Class book
>>>    {
>>>      int ID { get; set; }
>>>      String Name { get; set; }
>>>      String Author { get; set; }
>>>      String Description { get; set; }
>>>    }
>>>
>>>    ...
>>>    List<book> _books = new List<book>();
>>>
>>>    _books.Add(new book { ID=1, Name="book1", Author="author1",
>>>    Description="Description1"});
>>>    _books.Add(new book { ID=2, Name="book2", Author="author2",
>>>    Description="Description2"});
>>>    _books.Add(new book { ID=3, Name="book3", Author="author3",
>>>    Description="Description3"});
>>>    _books.Add(new book { ID=4, Name="book4", Author="author4",
>>>    Description="Description4"});
>>>
>>>    ...
>>>    _scope.SetVariable("books", _books);
>>>
>>>
>>>    Any help appreciated, thanks!
>>>    -Larry
>>>
>>>    _______________________________________________
>>>    Users mailing list
>>>    Users at lists.ironpython.com <mailto: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
>>>
>>>
>>
>>
>> --
>> http://www.ironpythoninaction.com/
>> http://www.voidspace.org.uk/blog
>>
>>
>>
>> _______________________________________________
>> 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/20090608/59fb7803/attachment.html>


More information about the Ironpython-users mailing list