Python docstring:重写父方法docs而不实现

2024-09-29 23:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是一个简化的场景:我有一个不同类别的工人池。所有的worker共享一个共同的祖先,我们把它命名为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如下所示:

^{pr2}$

我的主要目的是利用IDE的自动完成功能,而不是文档生成。也许有办法告诉文档self.\u pool实际上是一个int->;TypeAWorker映射,而不仅仅是dict,后者才是真正的python类?在


Tags: selfid类型returnobjectdefpasside

热门问题