微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。