On Wed, 07 Mar 2012 22:18:50 +1100, Ben Finney wrote: > de...@web.de (Diez B. Roggisch) writes: > >> John Nagle <na...@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: ... instead of 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. -- Steven -- http://mail.python.org/mailman/listinfo/python-list