私は、インスタンスの代わりにクラスを返すPythonの関数を持っています。戻り値が特定の型のサブクラスであることを示すにはどうすればよいですか?返される型のチェックPEP 484
次の例では、私はタイプとして戻り値を設定したが、私はさらに種類がBaseClassののすべての属性していることを示したいと思います:
from typing import Dict, Any
def class_constructor(name: str, attrs: Dict[str, Any]) -> type
ConstructedClass = type(name, (BaseClass,), attrs)
return ConstructedClass
class BaseClass: ...
私は(と言うことはできません... ) - > BaseClassそれはBaseClass自体ではなくBaseClassのインスタンスを示すためです。
私自身の質問に答えるには、python/typing issue #107と表示されます。今のところ、最良の解決策は次のとおりです。
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
あなた__init__
署名を知っている場合、あなたはCallable[Any, ...]
に代わりAny
のものを使用することができます。 Type[T]
のサポートが追加されると
ソリューションは次のようになります。
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
具体的な実行可能な例は、あなたが望んでいないものを提供できますか? – chepner
mypyとPEP 484の両方で、 'Type [T]'のサポートが追加されました。 – max