Can C# objects implement iterable protocols? Maybe that is why he was getting the 'object is unscriptable' error.
But good to know that it works. On Mon, Jun 8, 2009 at 6:06 PM, Larry Danberger <[email protected]>wrote: > Hi All, > I switched from a list to a dictionary of dictionaries, and it works as I > needed it. Don't know if that's a performance hit or not, but hey it > works. > > ..and yes I was retyping and had two typos (good eye!), should have been > TypeError: 'List[book]' object is unsubscriptable not 'List[books]' > object is unsubscriptable, and my code declared the book class methods as > public. > > Thank you all for your help. I'm sure this won't be my last question! > > -Larry > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Curt Hagenlocher > Sent: Monday, June 08, 2009 3:02 PM > To: Discussion of IronPython > Subject: Re: [IronPython] How to reference List objects? > > 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 <[email protected]> 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 > <[email protected]> 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 > <[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 > > > > > _______________________________________________ > Users mailing list > [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 >
_______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
