Python 相当于 Typescript 可索引类型?
Python's equivalence of Typescript's indexable type?
在打字稿中,有一个名为索引签名的构造,例如,让我表达特定对象的所有属性都具有字符串类型的值,即:
type Foo = { [key: string]: string }
如何在 Python 中键入类似提示,例如表示 class 的所有属性都应具有字符串类型的值?我想这样做的原因是因为我有一个 Python class 其属性事先不知道,但动态设置。
您的 Foo
类型的等价物是 dict
,其键和值的类型均为 str
:
Foo = dict[str, str]
如果您通过 __getattr__
在自定义 class 上动态生成属性,__getattr__
的签名决定了属性的类型:
class Foo:
def __getattr__(self, name: str) -> str:
return "foo"
f = Foo()
reveal_type(f.bar) # note: Revealed type is "builtins.str"
在打字稿中,有一个名为索引签名的构造,例如,让我表达特定对象的所有属性都具有字符串类型的值,即:
type Foo = { [key: string]: string }
如何在 Python 中键入类似提示,例如表示 class 的所有属性都应具有字符串类型的值?我想这样做的原因是因为我有一个 Python class 其属性事先不知道,但动态设置。
您的 Foo
类型的等价物是 dict
,其键和值的类型均为 str
:
Foo = dict[str, str]
如果您通过 __getattr__
在自定义 class 上动态生成属性,__getattr__
的签名决定了属性的类型:
class Foo:
def __getattr__(self, name: str) -> str:
return "foo"
f = Foo()
reveal_type(f.bar) # note: Revealed type is "builtins.str"