小编Jos*_*zer的帖子

指定泛型集合中重写方法的类型提示

我定义了一个抽象基类BaseRepository,它充当具有指定 supertype 的项目的集合Foo。中的便利类方法BaseRepository被注释/类型暗示用于类型的对象Foo。这是一个最小的例子:

from abc import ABCMeta, abstractmethod
NoReturn = None

class Foo(object):
    pass  # simple data holding object


class BaseRepository(object, metaclass=ABCMeta):

    # May be filled with subtypes of `Foo` later
    _items = None  # type: List[Foo]

    @classmethod
    def get_item(cls) -> Foo:
        return cls._items[0]

    @classmethod
    @abstractmethod
    def _load_items(cls) -> NoReturn:
        pass
Run Code Online (Sandbox Code Playgroud)

现在有多个静态实现(例如SubRepository),每个实现都应该使用它们自己的项目类型(例如Bar),它们是原始泛型类型的子类Foo

class Bar(Foo):
    pass  # Must implement Foo in order for BaseRepository's methods to work …
Run Code Online (Sandbox Code Playgroud)

python generics collections inheritance types

4
推荐指数
1
解决办法
1387
查看次数

标签 统计

collections ×1

generics ×1

inheritance ×1

python ×1

types ×1