On 7/27/06, Greg Ewing <[EMAIL PROTECTED]> wrote:
> Guido van Rossum wrote:
> > So how about we change callable() and add hashable(), iterable() and
> > whatever else makes sense so that these all become like this:
> >
> >   def callable(x):
> >     return getattr(x, "__call__", None) is not None
>
> This *still* doesn't fully solve the problem in the case
> of __hash__, since a container may be unhashable due to
> its contents, even if it has a __hash__ method itself.

For that matter, it doesn't solve the problem for __call__ or __iter__
either since they could also raise TypeErrors.  Any of these
method-checking approaches can only tell you if an object *doesn't*
support operation X. Their return values should really be read as:

    False -- definitely doesn't support operation X
    True -- could possibly support operation X

Maybe we should reverse the polarity and rename them to
isdefinitelynotcallable(), isdefinitelynotiterable(), etc.? ;-)

STeVe
-- 
I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a
tiny blip on the distant coast of sanity.
        --- Bucky Katt, Get Fuzzy
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to