"John Roth" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
| On Apr 12, 8:52 am, [EMAIL PROTECTED] (John J. Lee) wrote:
| > Christian Heimes <[EMAIL PROTECTED]> writes:
| > > Gabriel Genellina schrieb:
| > >> On the last line, str(x), I would expect 'abc' - same as str(x, 
'ascii')
| > >> above. But I get the same as repr(x) - is this on purpose?
| >
| > > Yes, it's on purpose but it's a bug in your application to call str() 
on
| > > a bytes object or to compare bytes and unicode directly. Several 
months
| > > ago I added a bytes warning option to Python. Start Python as 
"python
| > > -bb" and try it again. ;)
| >
| > Why hasn't the one-argument str(bytes_obj) been designed to raise an
| > exception in Python 3?
| >
| > John
|
| Because it's a fundamental rule that you should be able to call str()
| on any object and get a sensible result.
|
| The reason that calling str() on a bytes object returns a bytes
| literal rather than an unadorned character string is that there are no
| default encodings or decodings: there is no way of determining what
| the corresponding string should be.

In having a double meaning, str is much like type.  Type(obj) echoes the 
existing class of the object.  Type(o,p,q) attempts to construct a new 
class.  Similarly, Str(obj) gives a string representing the obj (which, for 
a string, is the string;-).  Str(obj,obj2) attemps to construct a new 
string.

tjr



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to