It's funny that we added __new__ but no __repr__ for array. Anyway, I've opened bug #16833 (http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=16833) to fix all of them so feel free to vote for it.
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Foord Sent: Wednesday, May 28, 2008 2:40 PM To: Discussion of IronPython Subject: Re: [IronPython] What C# methods do __repr__ and __str__ use? Dino Viehland wrote: > We could definitely add a __repr__ for the normal .NET lists (and even other > standard types like Dictionary). Maybe something like Python's set's repr so > it'd look like: > > List[object]([2, 3, 4]) > > Does that look good? > Spot on. Array could use the same love. Michael Foord > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Douglas S. > Blank > Sent: Wednesday, May 28, 2008 2:08 PM > To: Discussion of IronPython > Subject: Re: [IronPython] What C# methods do __repr__ and __str__ use? > > Dino Viehland wrote: > >> The problem w/ a common __repr__ is that each language will >> presumably have different syntax for creating the object. For >> example a better repr in Python might be: >> >> Pixel(255,255,128) >> >> Where Ruby should probably display something like: >> >> Pixel.new(255,255,128) >> > > Agreed. But maybe there can be some name *patterns* that if implemented > once would suffice for most languages. I'm not too worried about this > though. > > >> Having a repr of [255,255,128] isn't that meaningful because if I >> copy and paste that into my code I get a list instead of a Pixel >> back. >> > > Sorry, I switched issues on you :) That was the point of that example... > generic lists don't look like lists at all. I'm actually more concerned > with this example than the previous. A generic list of ints, strings, > etc. ought to be able to have a better representation in IP. > > >> We could revisit what our default repr does for .NET objects >> that override ToString. We discussed it once on the list long ago >> but that was mainly focused on dealing w/ multi-line ToStrings if I >> recall correctly - the thought of playing better with multiple >> languages wasn't much of an issue back then for us. >> >> So basically I am open to suggestions :) >> > > Perhaps generic lists could inherit a version of Python List's __repr__? > (But of course, not just for Python, but for Ruby, etc.) > > Thanks! > > -Doug > > >> -----Original Message----- From: [EMAIL PROTECTED] >> [mailto:[EMAIL PROTECTED] On Behalf Of Douglas S. >> Blank Sent: Wednesday, May 28, 2008 1:47 PM To: Discussion of >> IronPython Subject: Re: [IronPython] What C# methods do __repr__ and >> __str__ use? >> >> Dino Viehland wrote: >> >>> You'll want to implement the ICodeFormattable interface. It looks >>> like we don't pick up a method that's just named __repr__ right >>> now. I could see us fixing that but I wouldn't think it's a high >>> priority unless someone finds implementing ICodeFormattable >>> burdensome. >>> >> Thanks, that did the trick (sample attached below)! It isn't >> burdensome, but I wonder about what will happen when we use IronRuby, >> too? We'll we need repr methods for each language? >> >> I also wonder if things like a generic list couldn't pick up a >> reasonable default __repr__ for use in all DLR languages. >> >> We're using the .NET languages in an educational environment for new >> students. Currently, we're going to have to add the __repr__ to all >> classes, and add subclasses to all types for which there isn't a >> reasonable repr default. For example, there is a pretty big >> difference between: "[255, 255, 128]" and "<List<GraphicsCore+Pixel> >> object at 0x000002C [List<GraphicsCore+Pixel>]>" or whatever it might >> be. >> >> In any event, we have a work around now; thanks again! >> >> -Doug >> >> using System; using IronPython.Runtime; // for ICodeFormattable using >> Microsoft.Scripting.Runtime; // for CodeContext public class TestMe : >> ICodeFormattable { public virtual string __repr__(CodeContext >> context) { return String.Format("<Hi Mom>"); } } >> >> >> >>> -----Original Message----- From: [EMAIL PROTECTED] >>> [mailto:[EMAIL PROTECTED] On Behalf Of Douglas >>> S. Blank Sent: Wednesday, May 28, 2008 12:22 PM To: Discussion of >>> IronPython Subject: Re: [IronPython] What C# methods do __repr__ >>> and __str__ use? >>> >>> Anyone have an answer for this: I can't write C# code that has its >>> own method for use in repr(). Am I missing something? >>> >>> -Doug >>> >>> Douglas S. Blank wrote: >>> >>>> On Fri, May 23, 2008 3:37 pm, Toni Alatalo said: >>>> >>>>> Douglas S. Blank kirjoitti: >>>>> >>>>>> will use it? Likewise, what C# method is used in Python's >>>>>> str(obj)? >>>>>> >>>>>> >>>>> i don't know, but would guess ToString() .. and wonder about it >>>>> if it wasn't that but something else :o repr() can't guess, i >>>>> don't think there's an equivalent in .net, but can very well be >>>>> mistaken there. >>>>> >>>> It looks like the C# method __str__ is used for the Python >>>> method, but in IP2B2 the C# method __repr__ is getting >>>> overwritten by an auto generated method. Is that a bug, or is >>>> there something I'm missing? >>>> >>>> $ ipy2 -i python/graphics.py >>>> >>>>>>> pm = Pixmap() pm.getPixel(0,0) # What is >>>>>>> this calling? >>>>>>> >>>> <Pixel object at 0x2B> >>>> >>>>>>> pm.getPixel(0,0).__repr__() # This is repr() too >>>>>>> >>>> '<GraphicsCore+Pixel object at 0x2C [GraphicsCore+Pixel]>' >>>> >>>>>>> pm.getPixel(0,0).__Repr__() # This is mine >>>>>>> >>>> '<Pixel at (0,0)>' >>>> >>>>>>> pm.getPixel(0,0).__str__() # That is mine, and >>>>>>> str() >>>>>>> >>>>>>> >>>> '<Pixel at (0,0)>' >>>> >>>>>>> pm.getPixel(0,0).ToString() # Used by __repr__ >>>>>>> >>>> 'GraphicsCore+Pixel' >>>> >>>> -Doug >>>> >>>> >>>>>> -Doug >>>>>> >>>>>> >>>>> ~Toni >>>>> >>>>> _______________________________________________ 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 >> _______________________________________________ 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 > -- http://www.ironpythoninaction.com/ http://www.theotherdelia.co.uk/ http://www.voidspace.org.uk/ http://www.ironpython.info/ http://www.resolverhacks.net/ _______________________________________________ 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
