使用typing
模块,您可以编写
from typing import Dict
my_type: Dict[str, int]
其中Dict
是一个类。我的问题是:什么是类名后面的括号。 python的哪个语法方面允许该语法?我如何在自己的课堂上做类似的事情?
答案 0 :(得分:2)
感谢@timgeb
为我指出正确的方向。原来它确实使用__getitem__
。但是,由于__getitem__
引用了 instance ,因此必须在当前类为其实例的某种对象中对其进行定义。因此,您必须使用元类。例如
class Root(type):
def __getitem__(self, i):
print(f'arguments: {i}')
class MyDict(metaclass=Root):
pass
现在,与
MyDict[list, str]
你得到
arguments: (<class 'list'>, <class 'str'>)