Python Mypy:虽然子类实现了抽象属性,但无法实例化抽象类

问题描述

我正在对抽象类的子类进行实例化的for循环,但mypy似乎无法确定它正在实例化实现抽象类的子类

我收到此错误: 无法实例化 具有抽象属性 'convert' 的抽象类 'AbstractDirConvertManager'

为类添加代码副本(我从复制的代码删除了导入以便于阅读)

from abc import abstractmethod


class AbstractDirConvertManager:
    def __init__(self,pack: Pack,input_path: str,server_version: Version,entity_dir_name: str = ''):
        self.pack = pack
        self.input_path = input_path
        self.server_version = server_version
        self.entity_dir_name = entity_dir_name

    @abstractmethod
    def convert(self):
        pass

    def should_convert(self) -> bool:
        return self.is_dir_convert_manager_path() or self.is_pack_path()

    def is_pack_path(self) -> bool:
        return os.path.basename(os.path.dirname(self.input_path)) == PACKS_DIR

    def is_dir_convert_manager_path(self) -> bool:
        return os.path.basename(self.input_path) == self.entity_dir_name

class LayoutsDirConvertManager(AbstractDirConvertManager):
    VERSION_6_0_0 = Version('6.0.0')

    def __init__(self,server_version: Version):
        super().__init__(pack,input_path,server_version,entity_dir_name='Layouts')
        self.input_path: str = input_path
        self.server_version = server_version
        self.pack = pack

    def convert(self):
        if self.server_version >= self.VERSION_6_0_0:
            layout_converter: LayoutBaseConverter = LayoutSixConverter(self.pack)
        else:
            layout_converter = LayoutBelowSixConverter(self.pack)
        layout_converter.convert_dir()


class ClassifiersDirConvertManager(AbstractDirConvertManager):
    def convert(self):
        return "Todo"

    def __init__(self,entity_dir_name='Classifiers')

有什么帮助吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)