On Sun, Oct 13, 2019 at 07:15:09PM -0000, Steve Jorgensen wrote:

> …and that leaves only the suggestion that `type.__contains__(self, 
> other)` could be a synonym for `isinstance(other, self)`.

We don't normally think of an instance as being an element contained by 
its class. We wouldn't say that Nemo is *in* the type Fish, we say that 
Nemo *is a* Fish, and we don't expect that iterating over Fish will 
eventually yield Nemo.

In Python, we spell containment testing as `in` and `is-a` relationship 
testing as `isinstance`. But types aren't containers and we surely don't 
want 

    isinstance(float, collections.abc.Container)

to return True. Even when the class can be identified as equivalent to 
its set of values, such as for numeric types, there are all sorts of 
complexities that will only lead to confusion:

    from numbers import Real
    1.0 in Real  # okay, unproblematic
    2+3j in complex  # also okay
    1 in complex  # mathematically true, but isinstance-wise false
    float('INF') in Real  # isinstance-wise true, but mathematically false.



-- 
Steven
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/LQRGFLQPZRDWD3AN3KKUN6WRPDRSWXQ6/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to