我是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类?