class Shape: def __init__(self, x, y): self.x = x self.y = y def move(self, delta_x, delta_y): self.x = self.x + delta_x self.y = self.y + delta_y class Square(Shape): def __init__(self, side=1, x=0, y=0): super().__init__(x, y) self.side = side class Circle(Shape): pi = 3.14159 all_circles = [] def __init__(self, radius=1, x=0, y=0): super().__init__(x, y) self.radius = radius self.all_circles.append(self) @property def radius(self): return self._radius @radius.setter def radius(self, value): if value < 0: raise ValueError("Radius cannot be negative") self._radius = value @classmethod def total_area(cls): area = 0 for circle in cls.all_circles: area += cls.circle_area(circle.radius) return area @staticmethod def circle_area(radius): return __class__.pi * radius * radius