我正在寻找一种方法来注释工厂函数的返回类型
它返回“AlgorithmBase”的随机子级
class AlgorithmFactory:
_algorithm_types = AlgorithmBase.__subclasses__()
def select_random_algorithm(self) -> AlgorithmBase:
# Select random algorithm
algorithm_class = self._random_generator.choice(AlgorithmFactory._algorithm_types)
algorithm = algorithm_class()
return algorithm
我从mypy获得错误信息:
我得到的错误是:
Cannot instantiate abstract class 'AlgorithmBase' with abstract attributes 'get_constraints' and 'satisfy_constraints'
在这段代码中无法实例化类'AlgorithmBase',如何让mypy理解它
我希望避免在返回类型中使用“Union”指定实际的子类。有什么建议吗
据我所知,这应该是可行的,但似乎有一个或多个
AlgorithmBase
子类没有实现这两个抽象方法让MyPy为
产生与您得到的错误相同的错误,并且一旦实现了这些方法,它就会毫无错误地运行
这里的问题不是返回类型,而是“\u算法\u类型”。mypy无法理解它是什么类型,所以它假设它类似于返回类型,并得到了错误
以下代码修复了该问题:
相关问题 更多 >
编程相关推荐