Python中如何为类或其子类实例的变量添加类型提示?
正确的类型提示方式
你不需要用type[Animal](这个确实是用来标注类本身而非类实例的),直接用Animal作为变量的类型注解就可以了。因为在Python的类型系统里,子类的实例自动属于父类的类型范畴,Dog()、Cat()和Animal()都符合Animal类型的标注,mypy也会完全认可这种写法。
修正后的代码示例:
class Animal: pass class Dog(Animal): pass class Cat(Animal): pass a: Animal = Dog() # 合法,Dog是Animal的子类 a = Cat() # 同样合法 a = Animal() # 当然也合法
如果需要更明确地标注“可以是Animal或其子类的实例”,其实Animal已经完全表达了这个含义——面向对象的多态特性决定了子类实例是父类类型的子类型,类型检查器会自动识别这一点。
内容的提问来源于stack exchange,提问作者JSaur
相关产品推荐
相关产品推荐

