python – 类型检查返回类PEP 484
发布时间:2020-12-20 13:11:29 所属栏目:Python 来源:网络整理
导读:我在 python中有一个函数,它返回一个类而不是一个实例.如何指示返回的值是特定类型的子类? 在下面的示例中,我将返回值设置为type,但我还想表明该类型具有BaseClass的所有属性: from typing import Dict,Anydef class_constructor(name: str,attrs: Dict[st
我在
python中有一个函数,它返回一个类而不是一个实例.如何指示返回的值是特定类型的子类?
在下面的示例中,我将返回值设置为type,但我还想表明该类型具有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,Any]) -> Callable[Any,BaseClass] ConstructedClass = type(name,attrs) return ConstructedClass 如果您知道__init__签名,则可以在Callable [Any,…]中使用它而不是Any. 当添加对Type [T]的支持时,解决方案将是: from typing import Dict,Any]) -> Type[BaseClass] ConstructedClass = type(name,attrs) return ConstructedClass 解决方法
我认为您需要创建一个新类,BaseClass仅将其用作标记它和任何后代类的方法.
class BaseClassMeta(type): pass class BaseClass(metaclass=BaseClassMeta): ... def class_constructor(name: str,Any]) -> BaseClassMeta ConstructedClass = BaseClassMeta(name,attrs) return ConstructedClass (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |