from matplotlib import pyplot as plt


class Color:
    def __init__(self, red, green, blue):
        self.r = min(max(red, 0), 1)
        self.g = min(max(green, 0), 1)
        self.b = min(max(blue, 0), 1)

    def get_tuple(self):
        return self.r, self.g, self.b

    def show(self):
        plt.scatter(0, 0, s=1e6, color=self.get_tuple())
        plt.show()

    def blend_add(self, other_color):
        return Color(self.r + other_color.r,  self.g + other_color.g, self.b + other_color.b)

    def blend_average(self, other_color):
        return Color((self.r + other_color.r) / 2,  (self.g + other_color.g) / 2, (self.b + other_color.b) / 2)

    def __add__(self, other_color): # __ - "dunder"
        return self.blend_add(other_color)

    def __mul__(self, other_color):
        return self.blend_average(other_color)

    def __str__(self):
        return f'Color{self.get_tuple()}'

    def __eq__(self, other_color):
        return self.get_tuple() == other_color.get_tuple()

if __name__ == "__main__":
    red = Color(1, 0, 0)
    green = Color(0, 1, 0)
    blue = Color(0, 0, 1)
    (red + green).show()
    (red + green * blue).show()
    print(red + green == Color(1, 1, 0))
