2017-02-28 15:12 GMT-08:00 Steven D'Aprano <st...@pearwood.info>:
> 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()".

> "is-a" tests are not the same as "in" tests. They are completely
> unrelated comparisons.
>
> http://www.w3resource.com/java-tutorial/inheritance-composition-relationship.php
>
> The Wikipedia page on is-a is terribly complicated, but folks may get
> something from it:
>
> https://en.wikipedia.org/wiki/Is-a
>
>
>
> --
> Steve
> _______________________________________________
> Python-ideas mailing list
> Python-ideas@python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to