Я новичок в документации строк 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?