I have wanted this and suggested it before for use with typing.
Defining protocols is obnoxiously verbose for "struct" like data and keyword
arguments to subscript could help alleviate that.
I often want to write type hint like this:
```
def foo(x: Protocol[id=int, name=str]):
bar(x)
baz(x)
def bar(x: Protocol[name=str]): ...
def baz(x: Protocol[id=int]): ...
```
So I either need to specify more restrictive types than necessary (which often
is not possible because I reuse my functions), or generate a combinatorial
number of Protocols. Beyond the obvious annoyances that come with having to
generate many protocols, simply naming them is cognitively expensive. I don't
need to bind an identifier when declaring a Union or specializing a generic but
if I want to say I have a type with some attribute it MUST be named.