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 <[email protected] <mailto:[email protected]>> 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
    [email protected] <mailto:[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


--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to