-----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