[英]Python Type Hints
in python 3.10 this code works, but from static code analysis I get error message from Pylance regarding "generalTypeIssue"在 python 3.10 中,此代码有效,但从 static 代码分析中,我从 Pylance 收到有关“generalTypeIssue”的错误消息
@dataclass
class Animal():
name:str
class Dog(Animal):
def bark(self):
print("whoof")
class Snake(Animal):
def bite(self):
print("bite!!!")
def make_animal(animal_class: type[Animal], name: str) -> Animal:
return animal_class(name=name)
my_dog = make_animal(animal_class=Dog, name="bello")
# type(my_dog) is <class '__main__.Dog'>
my_dog.bark() <--- cannot access member bark for Animal
How to make a func that returns instances with correct types based on the input type?如何制作一个函数,根据输入类型返回具有正确类型的实例?
Use a bound TypeVar
to annotate the make_animal
generic function使用绑定的
TypeVar
来注释make_animal
泛型 function
from dataclasses import dataclass
from typing import TypeVar
@dataclass
class Animal:
name: str
T = TypeVar('T', bound=Animal)
class Dog(Animal):
def bark(self):
print("whoof")
class Snake(Animal):
def bite(self):
print("bite!!!")
def make_animal(animal_class: type[T], name: str) -> T:
return animal_class(name=name)
my_dog = make_animal(animal_class=Dog, name="bello")
# my_dog is correctly narrowed to Dog
my_dog.bark()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.