首页 > 解决方案 > Python docstring:覆盖父的方法文档而不实现

问题描述

我是 python 文档字符串的新手,所以这个问题可能很简单,但是,我无法找到明确的答案,可能是因为我没有问正确的问题。我发现这个关于文档字符串继承的问题非常有用,但是我需要做一些不同的事情:我想修改父函数的声明返回类型,我不需要在儿子中重写。

这是简化的场景:我有一群不同类别的工人。所有的工人都有一个共同的祖先,让我们命名它BaseWorker,所有的池也有一个共同的祖先,BasePool

这是一个示例(非常简化),它允许我使用 IDE 的类型提示,但是它涉及对 return_stored_worker() 的不必要覆盖:

class BaseWorker():
    pass
class TypeAWorker(BaseWorker):
    pass

class BasePool(object):
    def __init__(self, n):
        self._pool = {}
        for i in range(n):
            self._pool[i] = BasePool()

    def return_stored_worker(self, id):
        """ Blabla
        Returns:
            BaseWorker
        """
        # Verifications and other stuff
        return self._pool[id]

class TypeAPool(object):
    def __init__(self, n):
        self._pool = {}
        for i in range(n):
            self._pool[i] = TypeAWorker()

    def return_stored_worker(self, id):
        """ Blabla
        Returns:
            TypeAWorker
        """
        return super().return_stored_worker(id)

正如您所看到的,这可以解决问题,但是从程序的角度来看,这会在完全没有意义的调用中引入几纳秒的时间。

正确编码后,TypeAPool看起来就像这样:

class TypeAPool(object):
    def __init__(self, n):
        self._pool = {}
        for i in range(n):
            self._pool[i] = TypeAWorker()

我的主要目的是利用 IDE 的自动完成功能,而不是文档生成。也许有一种方法可以告诉文档 self._pool 实际上是一个 int -> TypeAWorker 映射,而不仅仅是一个 dict,它是真正的 python 类?

标签: pythonautocompletedocumentationdocstring

解决方案


推荐阅读