[IronPython] How to reference List objects?
Michael Foord
fuzzyman at voidspace.org.uk
Mon Jun 8 22:32:50 CEST 2009
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
More information about the Ironpython-users
mailing list