38 lines
807 B
Python
38 lines
807 B
Python
|
|
from math import pi
|
||
|
|
|
||
|
|
|
||
|
|
class Circle:
|
||
|
|
def __init__(self, radius=1):
|
||
|
|
self.radius = radius
|
||
|
|
|
||
|
|
def __repr__(self):
|
||
|
|
return f"Circle({self.radius})"
|
||
|
|
|
||
|
|
@property
|
||
|
|
def radius(self):
|
||
|
|
return self._radius
|
||
|
|
|
||
|
|
@radius.setter
|
||
|
|
def radius(self, radius):
|
||
|
|
if radius < 0:
|
||
|
|
raise ValueError("Radius cannot be negative")
|
||
|
|
self._radius = radius
|
||
|
|
|
||
|
|
@property
|
||
|
|
def diameter(self):
|
||
|
|
return 2 * self._radius
|
||
|
|
|
||
|
|
@diameter.setter
|
||
|
|
def diameter(self, diameter):
|
||
|
|
if diameter < 0:
|
||
|
|
raise ValueError("Diameter cannot be negative")
|
||
|
|
self._radius = diameter / 2
|
||
|
|
|
||
|
|
@property
|
||
|
|
def area(self):
|
||
|
|
return pi * self._radius ** 2
|
||
|
|
|
||
|
|
@area.setter
|
||
|
|
def area(self, area):
|
||
|
|
raise AttributeError("Can't set attribute")
|