Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Python - Jak anotovat návratový typ podle argumentu metody?

Ahoj,

potřeboval bych u metody vynutit návratový typ podle vstupního argumentu dané metody, aby mi PyCharm nabízel použitelné vlastnosti a metody daného vynuceného typu. Na způsob tohoto např.:

config.py:


class Config:
    def get_config_value(self, key: str, as_type: type = str) -> as_type:
        value = self.get_key(key)
        # (...some another logic...)
        return as_type(value)

main.py:


from pathlib import Path
from config import Config


class MainClass:
    def __init__(self):
        self.config = Config()

    def main(self):
        config_path = self.config.get_config_value('cesta', Path)
        for filepath in config_path.iterdir():
            pass

U toho for cyklu bych pak právě potřeboval, aby to napovídalo tu metodu iterdir(), kterou má objekt Path.
Vím, že by to tak mělo fungovat, kdybych ještě fixně vynutil datový typ té proměnné config_path:
Buď config_path: Path = self.config.get_config_value('cesta', Path), nebo config_path = Path(self.config.get_config_value('cesta', Path)), ale nelíbí se mi, že tam je 2x to Path.
V metodě get_config_value() potřebuju podle toho vstupního argumentu typu, na který se má hodnota převést podle toho dál ještě ten objekt připravit nějak a až pak ho vrátit v tom daném typu. Jak to ale anotovat? Co má být místo toho aktuálního -> as_type, nebo jak toho jinak docílit?

Díky.

Předmět Autor Datum
Nenašly se žádné odpovědi.

Zpět do poradny Odpovědět na původní otázku Nahoru