[Python-Dev] operator.is*Type (original) (raw)
Ian Bicking ianb at colorstudy.com
Wed Feb 22 18:10:14 CET 2006
- Previous message: [Python-Dev] operator.is*Type
- Next message: [Python-Dev] operator.is*Type
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Raymond Hettinger wrote:
from operator import isSequenceType, isMappingType class anything(object): ... def getitem(self, index): ... pass ...
something = anything() isMappingType(something) True isSequenceType(something) True I suggest we either deprecate these functions as worthless, or we define the protocols slightly more clearly for user defined classes. They are not worthless. They do a damned good job of differentiating anything that CAN be differentiated.
But they are just identical...? They seem terribly pointless to me. Deprecation is one option, of course. I think Michael's suggestion also makes sense. If we distinguish between sequences and mapping types with two functions, then those two functions should be distinct. It seems kind of obvious, doesn't it?
I think hasattr(obj, 'keys') is the simplest distinction of the two kinds of collections.
Your example simply highlights the consequences of one of Python's most basic, original design choices (using getitem for both sequences and mappings). That choice is now so fundamental to the language that it cannot possibly change. Get used to it.
In your example, the results are correct. The "anything" class can be viewed as either a sequence or a mapping. In this and other posts, you seem to be focusing your design around notions of strong typing and mandatory interfaces. I would suggest that that approach is futile unless you control all of the code being run.
I think you are reading too much into it. If the functions exist, they should be useful. That's all I see in Michael's suggestion.
-- Ian Bicking / ianb at colorstudy.com / http://blog.ianbicking.org
- Previous message: [Python-Dev] operator.is*Type
- Next message: [Python-Dev] operator.is*Type
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]