如何将返回类型指定为类中其他方法的返回类型

时间:2020-09-15 15:34:19

标签: python python-3.x generics python-asyncio

我有一个帮助程序,用于抓取分页内容。

从此类继承而来的类仅是实现了extract_info方法。

我想提供正确的get_from_few_pages方法返回类型-异步生成器,其产生的类型值是extract_information方法的返回类型

我该怎么办?

P.S我找不到如何将类型声明为某些函数/方法的返回。

在此先感谢您的任何建议或解决方案

class PaginatedContent():

@classmethod
def extract_information(cls, page: HtmlElement):
    """Extracting information from one page """

async def _get_page(self, page: int) -> HtmlElement:
    """Just requesting a page"""
    async with self._get_session().get(**Some url**) as page:
        return lxml.html.document_fromstring(await page.text())

async def extract_data_from_page(
    self, page_number: int
):
    """Requesting and extracting information"""
    return self.extract_information(await self._get_page(page_number))

async def get_from_few_pages(
    self, max_pages: int
):
    """Requesting and extracting information from few pages"""
    pages = [
        asyncio.ensure_future(
            asyncio.get_running_loop().create_task(self.extract_data_from_page(i))
        )
        for i in range(max_pages)
    ]

    for coroutine in pages:
        await asyncio.gather(coroutine)
        yield coroutine.result()

当前解决方案不佳的示例-仍然在寻找更好的解决方案

def get_from_few_pages(
    self, max_pages: int = 0, pages_to_scrape_generator=lambda x: range(2, x + 1)
) -> AsyncGenerator[Generator[_AlbumInfo], None]:
    ...

0 个答案:

没有答案
相关问题