如何在Python函数签名中引用类属性的类型?
如何在函数签名中引用类属性的类型
你想要的类似TypeScript中Person["name"]的语法,在Python的主流类型检查器(如Pyright、mypy)中已经支持,直接用索引访问的方式就能实现:
class Person: name: str def __init__(self, name) -> None: self.name = name def greet(name: Person["name"]): return "Hello " + name
这种写法可以让类型检查器正确识别name参数的类型为Person类中name属性的类型,不会触发语法或类型检查错误。
再说说你尝试的两种方法:
- 定义类型别名的方式是可行的,但如果后续需要修改
Person.name的类型,必须同时修改别名,维护成本稍高。 reveal_type是类型检查器的调试工具,并非正式的类型注解语法,虽然能让检查器识别类型,但代码运行时会抛出NameError,不适合用于生产代码。
内容的提问来源于stack exchange,提问作者craigmulligan
相关产品推荐
相关产品推荐

