[Python-Dev] Evil isinstance() (original) (raw)
Aahz aahz@pythoncraft.com
Sun, 31 Mar 2002 16:21:46 -0500
- Previous message: [Python-Dev] Evil isinstance()
- Next message: [Python-Dev] Evil isinstance()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sun, Mar 31, 2002, Guido van Rossum wrote:
Alex Martelli:
Why would you want your function to break if called with an instance of UserString, say, or a user-defined number type? Smooth polymorphism is high on the list of Python's strong points -- why break it, when you can preserve this excellent quality? I'm for this; but it's hard to pick the right test in many cases. Many types define both str and int -- but either may lose information (in the case of a float, these both lose information!).
Yup, this is precisely what I'm concerned with. My use case for any discussion of this subject is my BCD project (which I haven't worked on in several months, but never mind). I need to be able to accept floats, ints/longs, and string representations of numbers, all at the maximum possible precision for each type. I suppose I could create helper functions called e.g. BCDfromString() and force people to do explicit conversions, but that seems messy to me -- and it contravenes the way int()/str()/float() work.
(Alex, IIRC, the last time we had this discussion you agreed that I didn't have any choice.)
Note that these days with new-style classes the situation is actually better: inherit from the built-in types, and isinstance() works correctly.
Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/
Why is this newsgroup different from all other newsgroups?
- Previous message: [Python-Dev] Evil isinstance()
- Next message: [Python-Dev] Evil isinstance()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]