
在下面的示例中,我将返回值设置为type,但我还想表明该类型具有BaseClass的所有属性:
from tyPing import Dict,Anydef class_constructor(name: str,attrs: Dict[str,Any]) -> type ConstructedClass = type(name,(BaseClass,),attrs) return ConstructedClassclass BaseClass: ...
我不能说(…) – > BaseClass因为那将指示BaseClass的实例而不是BaseClass本身.
要回答我自己的问题,这显示为python/typing issue #107.目前,最好的解决方案是:
from tyPing import Dict,Anyclass 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总结
以上是内存溢出为你收集整理的python – 类型检查返回类PEP 484全部内容,希望文章能够帮你解决python – 类型检查返回类PEP 484所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)