import math class Circle: def __init__(self, x, y, r): self.x = x self.y = y self.r = r def area(self): return math.pi * self.r ** 2 c = Circle(0, 0, 1) print(c.x) print(c.y) print(c.r) c.r = 2 print(c.r) print(c.area()) import math class Circle: def __init__(self, x, y, r): self.x = x self.y = y self.set_r(r) def area(self): return math.pi * self.r ** 2 def set_r(self, r): if r < 0: raise ValueError("Radius should be nonnegative") self._r = r def get_r(self): return self._r c = Circle(0, 0, 1) print(c.x) print(c.y) c.set_r(2) print(c.get_r()) c.set_r(-1) import math class Circle: def __init__(self, x, y, r): self.x = x self.y = y self.r = r def area(self): return math.pi * self.r ** 2 @property def r(self): return self._r @r.setter def r(self, r): if r < 0: raise ValueError("Radius should be nonnegative") self._r = r c = Circle(0, 0, 1) print(c.x) print(c.y) c.r = 2 print(c.r) c.r = -1 import math class Circle: def __init__(self, x, y, r): self.x = x self.y = y self.r = r def area(self): return math.pi * self.r ** 2 @property def r(self): return self._r @r.setter def r(self, r): if r < 0: raise ValueError("Radius should be nonnegative") self._r = r def __str__(self): return 'Circle: x={}, y={}, r={}'.format(self.x, self.y, self.r) def __repr__(self): return 'Circle(x={}, y={}, r={})'.format(self.x, self.y, self.r) def __lt__(self, other): return self.r < other.r def __add__(self, other): return Circle(self.x + other.x, self.y + other.y, self.r + other.r) c = Circle(0, 0, 1) print(c) print(repr(c)) c2 = Circle(x=0, y=0, r=1) print(c2) print(c < c2) print(c + c2)