"Decoding unicode is not supported" in unusual situation
steve+comp.lang.python at pearwood.info
Wed Mar 7 12:42:53 CET 2012
On Wed, 07 Mar 2012 22:18:50 +1100, Ben Finney wrote:
> deets at web.de (Diez B. Roggisch) writes:
>> John Nagle <nagle at animats.com> writes:
>> > I think that somewhere in "suds", they subclass the "unicode" type.
>> > That's almost too cute.
>> > The proper test is
>> > isinstance(s,unicode)
>> Woot, you finally discovered polymorphism - congratulations!
> If by “discovered” you mean “broke”.
> John, polymorphism entails that it *doesn't matter* whether the object
> inherits from any particular type; it only matters whether the object
> behaves correctly.
> So rather than testing whether the object inherits from ‘unicode’, test
> whether it behaves how you expect – preferably by just using it as
> though it does behave that way.
I must admit that I can't quite understand John Nagle's original post, so
I could be wrong, but I *think* that both you and Diez have misunderstood
the nature of John's complaint.
I *think* he is complaining that some other library -- suds? -- has a
broken test for Unicode, by using:
if type(s) is unicode: ...
if isinstance(s, unicode): ...
Consequently, when the library passes a unicode *subclass* to the
tounicode function, the "type() is unicode" test fails. That's a bad bug.
It's arguable that the library shouldn't even use isinstance, but that's
an argument for another day.
More information about the Python-list