使用typing
模块你可以写
from typing import Dict
my_type: Dict[str, int]
Dict
是一个类。我的问题是:类名后面的括号是什么。 python 的哪个语法方面允许该语法?我怎样才能在自己的类(class)中做类似的事情?
最佳答案
感谢 @timgeb
为我指明了正确的方向。事实证明它确实使用了 __getitem__
。但是,由于 __getitem__
引用一个实例,您必须在当前类是其实例的对象中定义它。所以,你必须使用元类。例如
class Root(type):
def __getitem__(self, i):
print(f'arguments: {i}')
class MyDict(metaclass=Root):
pass
现在,用
MyDict[list, str]
你得到
arguments: (<class 'list'>, <class 'str'>)
关于python - `[]`模块类中的 `typing`是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52851753/