On 2/28/2017 6:35 PM, Jelle Zijlstra wrote:
2017-02-28 15:12 GMT-08:00 Steven D'Aprano <[email protected]>:
On Wed, Mar 01, 2017 at 07:02:23AM +0800, 语言破碎处 wrote:
where we use types?
almost:
isinstance(obj, T);
# issubclass(S, T);
Note that TYPE is SET;
What does that mean? I don't understand.
if we add __contains__ and __le__ into "type",
then things become:
obj in T;
But obj is **not** in T, since T is a type, not a container.
But in type theory, types are sets in some sense. For example, the
bool type is the set {True, False}, and the int type is the infinite
set {..., -1, 0, 1, ...}. Similarly, typing.py has a Union type:
Union[A, B] is the union of the types A and B. Subclasses are subsets
of their parent classes, because their set of possible values is a
subset of the possible values of their parent class.
The OP seems to be proposing that we reflect this identity between
types and sets in Python by spelling "isinstance(obj, T)" as "obj in
T" and "issubclass(S, T)" as "S <= T". This proposal has some solid
theory behind it and I don't think it would be hard to implement, but
it doesn't seem like a particularly useful change to me. It wouldn't
really enable anything we can't do now, and it may be confusing to
people reading code that "obj in list" does something completely
different from "obj in list()".
Also, you go from the easy to google "python issubclass" to ... ?
Syntax is hard to search for.
Eric.
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/