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

如何为依赖类factory属性的make方法添加返回值类型注解?

解决方案

要让make方法的返回值类型与factory属性的类型绑定,需要借助Python的泛型类型系统来实现,具体步骤如下:

  • 首先导入泛型相关的类型工具:

    from typing import TypeVar, Type, Generic
    
  • 定义一个类型变量,用于关联类的factory类型和make方法的返回值类型:

    T = TypeVar('T')
    
  • 修改Foo类,让它继承Generic[T],并将factory的类型注解改为Type[T],同时把make方法的返回类型注解设为T:

    class Foo(Generic[T]):
        factory: Type[T] = A
    
        def make(self) -> T:
            return self.factory()
    
  • 子类Bar继承Foo时,指定具体的类型参数B,这样factory的类型会被推断为Type[B],make方法的返回值类型也会对应为B:

    class Bar(Foo[B]):
        factory: Type[B] = B
    

完整代码示例:

from typing import TypeVar, Type, Generic

class A: pass
class B: pass

T = TypeVar('T')

class Foo(Generic[T]):
    factory: Type[T] = A

    def make(self) -> T:
        return self.factory()

class Bar(Foo[B]):
    factory: Type[B] = B

这样类型检查工具(比如mypy)就能正确识别Foo().make()返回A类型,Bar().make()返回B类型。

内容的提问来源于stack exchange,提问作者Chris Withers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:25:17