On 2/22/07, Neal Becker
Mike Klaas wrote:
On 2/22/07, Neal Becker
wrote: Well consider this:
str (4) '4' int(str (4)) 4 str (False) 'False'
bool(str(False)) True
Doesn't this seem a bit inconsisent?
Virtually no python objects accept a stringified version of themselves in their constructor:
str({}) '{}' dict('{}') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: dictionary update sequence element #0 has length 1; 2 is required str([]) '[]' list('[]') ['[', ']']
Python is not Perl.
Except, all the numeric types do, including int, float, and complex. But not bool. In fact, this is not just academic. The fact that other numeric types act this way leaves a reasonable expectation that bool will. Instead, bool fails in _the worst possible way_: it silently gives a _wrong result_.
i agree with mike; it would just be asking for trouble. (have you ever been bitten by the Perl behavior where the string '0' is considered false? it's a nasty, nasty problem to debug.) neal, you may be confusing the concepts of "convert data from one type to another" and "read the printed representation of data". ben