Örnek yerine bir sınıf döndüren python işlevim var. Döndürülen değerin belirli bir türden bir alt sınıf olduğunu nasıl belirtirim? (Tip kontrol edilmiş iade sınıfı PEP 484
from typing import Dict, Any
def class_constructor(name: str, attrs: Dict[str, Any]) -> type
ConstructedClass = type(name, (BaseClass,), attrs)
return ConstructedClass
class BaseClass: ...
Söyleyemem ...: Aşağıdaki örnekte
Ben türü olarak dönüş değeri, ancak daha ileri tipi BaseClass tüm niteliklerini sahip olduğunu belirtmek isteriz) -> Bu yana BaseClass BaseClass kendisi yerine bir BaseClass örneğini gösterir.
Kendi sorumu yanıtlamak için, bu python/typing issue #107 olarak görünür. Şimdilik, en iyi çözümdür: Eğer __init__
imza biliyorsanız
from typing import Dict, Any
class BaseClass: ...
def class_constructor(name: str, attrs: Dict[str, Any]) -> Callable[Any, BaseClass]
ConstructedClass = type(name, (BaseClass,), attrs)
return ConstructedClass
, sen Callable[Any, ...]
o yerine Any
kullanabilirsiniz. Type[T]
için destek çözüm olacaktır eklenir
:
from typing import Dict, Any
class BaseClass: ...
def class_constructor(name: str, attrs: Dict[str, Any]) -> Type[BaseClass]
ConstructedClass = type(name, (BaseClass,), attrs)
return ConstructedClass
İstediğiniz şeyi yapmayan somut, çalıştırılabilir bir örnek sağlayabilir misiniz? – chepner
Her ikisi de mypy ve PEP 484'te 'Type [T]' desteği eklenir. – max