46 lines
1004 B
Python
46 lines
1004 B
Python
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
|