Python文档字符串:无需执行即可覆盖父级的方法文档

时间:2019-01-11 16:52:12

标签: python autocomplete documentation docstring

我是python文档字符串的新手,所以这个问题可能很简单,但是,我找不到明确的答案,可能是因为我没有问正确的问题。我发现this question about docstring inheritance非常有用,但是我需要做些不同的事情:我想修改父函数的声明返回类型,而不必在son中重写。

这是简化的场景:我有一群不同阶级的工人。所有工人共享一个共同的祖先,我们命名为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类?

0 个答案:

没有答案