On 04/10/12 13:11, boB Stepp wrote:

What happens if str() or repr() is not supported by a particular
object? Is an exception thrown, an empty string returned or something
else I am not imagining?

I don't think that is possible, at least not by accident or neglect.
In Python 3, everything inherits from object, which supports both str
and repr, so everything else should too:

py> class MyClass:
...     pass
...
py> obj = MyClass()
py> str(obj)
'<__main__.MyClass object at 0xb7c8c9ac>'
py> repr(obj)
'<__main__.MyClass object at 0xb7c8c9ac>'


Not terribly exciting, but at least it tells you what the object is,
and gives you enough information to distinguish it from other, similar,
objects.

I suppose you could write a class that deliberately raised an exception
when you called str() on it, in which case it would raise an exception
when you called str() on it... :) Likewise for repr().


py> class Stupid:
...     def __str__(self):
...             raise TypeError('cannot stringify this object')
...
py> obj = Stupid()
py> str(obj)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __str__
TypeError: cannot stringify this object



What larger phrase does "repr" stand for? My text mentions
"representational form" later in the book, which sounds similar in
concept to what you are discussing.


repr is short for "representation", as in "string representation".



As I go along in my study of Python will it become clear to me when
and how repr() and str() are being "...used, or implied in many
places"?

Generally, print and the interactive interpreter are the only implicit
string conversions. At least the only ones I can think of right now...
no, wait, there's another one, error messages.

print() displays the str() of the object. The interactive interpreter
displays the repr() of the object. Error messages could do whatever
they like. Anything else, you have to explicitly convert to a string
using the form you want:

s = repr(x).lower()
t = str(y).replace('ss', 'ß')


or whatever.


--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to