This suggestion is so obvious that it's likely has been discussed, but I
can't find any reference (It's not what PEP-3124 talks about).
Generic class syntax, now:
_T_co = TypeVar('_T', covariant=True)
class Container(Generic[_T_co]):
@abstractmethod
def __contains__(self, x: _T_co) -> bool: ...
(yes it's object in reality)
Generic class syntax, suggested:
class Container[+T]:
@abstractmethod
def __contains__(self, x: T) -> bool: ...
The + signifies covariant type, as in Scala. The need for underscore prefix
and explicit name for covariant types is gone, since it's class-scoped.
The + is a bit cryptic, but so are term "covariant" and Generic[_T_co]. The
syntax by large is exactly what users coming from statically-typed
languages will expect.
Giving a bound can be done using "T <: AnyStr", "T: AnyStr" or any other
syntax.
Again, I assume it was discussed before, but my Google skills are failing
me; a pointer will be helpful.
~Elazar
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/