You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为返回特定子类的函数编写类型注解以解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:34:59