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

python中的多重继承问题

如何解决python中的多重继承问题

我试图学习更多Python,所以我决定使用python(一个简单的图像处理应用)来做一个学校项目。

我被困在这一部分:我试图初始化两个父类,但无法使其正常工作。

我得到的错误是:

TypeError: object.__init__() takes exactly one argument (the instance to initialize).

在这里阅读了其他问题后解决了两个问题,但是我无法弄清楚这个问题。 我希望有人能帮助我了解我在做什么错。

class MessageSystem:
    def __init__(self,class_name: str):
        self._class_name = class_name

    def print_status(self,msg: str):
        print(f"{self._class_name} :: {msg}")

    def print_error_status(self,err_msg: str):
        print(f"{self._class_name} :: {err_msg}")


class DataTools:
    def __init__(self,img: np.ndarray):
        self.img = img
        self._rgb_layers = [None,None,None]

    @property
    def img(self):
        return self.img

    @img.setter
    def img(self,value):
        self._img = value
        self.__convert_if_needed_img_to_uint8()
        self.__unstack_layers()

    def __convert_if_needed_img_to_uint8(self):
        if self._img.dtype != np.uint8:
            self.img_as_uint8()

    def __unstack_layers(self):
        for index,layer in enumerate(self._rgb_layers):
            self._rgb_layers[index] = self.img[:,:,index]


class Image(DataTools,MessageSystem):
    def __init__(self,img):
        self._original_img = None
        super(DataTools,self).__init__(img)
        super(MessageSystem,self).__init__("Image") # Error is here

    @DataTools.img.setter
    def img(self,value):
        DataTools.img.__set__(self,value)
        self._original_img = self.img.copy()
        print(f"original: {self._original_img.shape}")
        MessageSystem.print_status("Initialized img and layers")

    def save_to_disk(self,save_path: str):
        """Save processed image as np.uint8 to disk"""
        self.__convert_if_needed_img_to_uint8()
        skimage.io.imsave(save_path,self.img)

我省略了其他不相关的成员。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。