[Python-Dev] Adding Type[C] to PEP 484

Guido van Rossum gvanrossum at gmail.com
Sat May 14 16:28:46 EDT 2016


On Sat, May 14, 2016 at 11:47 AM, Peter Ludemann <pludemann at google.com>
wrote:

> I think that Type[C,D] would mean Union[Type[C], Type[D]], but I'm not
> sure ... I should probably talk to a typing expert about this.
> (Sorry for thinking out loud; but if we decide that Type[C,D] doesn't make
> sense, we need to prohibit it)
>

It sounds iffy enough to prohibit.


> I suppose I'm asking: do we allow new_user(Type[BasicUser, ProUser])?
>

That looks like a call, but Type[] is something to use in the definition.


> Here's a trivial example that off the top of my head makes sense:
>
> BasicOrProUser = TypeVar('BasicOrProUser', BasicUser, ProUser)
> def new_user(name: str, user_factory: Type[BasicOrProuser]) ->
> BasicOrProUser:
>     return user_factory(name)
>

That looks reasonable and only has one parameter to Type[].


> Or must the Type[...] item have been defined with a TypeVar(...,
> bound=...), in which case multiple types aren't allowed with Type[...]?
>

You can use whatever you want. If you want to write Type[int] go right
ahead. Even Type[Union[int, str]] should be allowed. There is *usually* a
good reason to use a type variable though -- without one the return type
would be the base class. (But then again maybe that could be what you want,
or you might not even have a return type, e.g. when the thing just gets
thrown into the database.)

--Guido


>
>
> On 14 May 2016 at 11:30, Guido van Rossum <gvanrossum at gmail.com> wrote:
>
>> What would Type[C, D] mean?
>>
>> --Guido (mobile)
>> On May 14, 2016 11:21 AM, "Peter Ludemann via Python-Dev" <
>> python-dev at python.org> wrote:
>>
>>> Is Type[C,D] allowed? Or should multiple types be restricted to TypeVar?
>>>
>>> _______________________________________________
>>> Python-Dev mailing list
>>> Python-Dev at python.org
>>> https://mail.python.org/mailman/listinfo/python-dev
>>> Unsubscribe:
>>> https://mail.python.org/mailman/options/python-dev/guido%40python.org
>>>
>>>
>


-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160514/4c7488c8/attachment.html>


More information about the Python-Dev mailing list