如何为返回特定子类的函数编写类型注解以解决Pylance兼容问题
如何让Pylance识别自定义类型检测后的返回类型?
我有若干继承自同一父类的子类,实现了自定义的类型检测方法(如is_worker、is_manager),但Pylance提示父类与子类类型不兼容。以下是简化示例代码:
class Employee: def is_worker(self) -> bool: return False def is_manager(self) -> bool: return False class Worker(Employee): def is_worker(self) -> bool: return True class Manager(Employee): def is_manager(self) -> bool: return True def get_employees_queue() -> list[Employee]: # 简化示例,仅用于说明可能的类型 return [Manager(), Worker()] def get_a_worker() -> Worker: employees = get_employees_queue() for employee in employees: if employee.is_worker(): return employee # 此处Pylance提示:类型"Employee"的表达式无法分配给返回类型"Worker" # "Employee"与"Worker"不兼容 raise RuntimeError('No workers found')
已尝试的解决方案:
- 使用内置
isinstance:可解决Pylance的类型提示问题,但我希望保留上述自定义方法以提升代码可读性; - 将
get_a_worker的返回类型改为Employee:能消除类型提示错误,但我明确该函数返回值一定是Worker类型; - 在
return前添加employee: Worker类型标注:此时Pylance会在for employee in employees:行提示类型不匹配错误。
请问如何让Pylance识别get_a_worker函数的返回值始终为Worker类型?
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

