1
私は(幾何学的な)円を表し、それ自身のデータを印刷できるクラスの最も簡単な例を実装しようとしています。2つの "同期"変数を持つクラスの最短の例
Circle
は、2つの変数、self.radius
とself.area
を持つクラスです。唯一の要件は、1つの変数を変更するときに、他の変数も変更することです。
これを行う最も簡単な方法は何ですか?それはproperty
デコレータでですか?
これは私の試みです。コードの少ないラインで同じことを達成するための方法があるかどうか、これを行うことができるよう最善である場合
import math
class Circle:
def __init__(self, radius=1):
self._radius = radius
self._area = math.pi * radius**2
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, radius):
self._radius = radius
self._area = math.pi * radius**2
@property
def area(self):
return self._area
@area.setter
def area(self, area):
self._area = area
self._radius = math.sqrt(area/math.pi)
def __repr__(self):
return 'radius {:.2f} area {:.2f}'.format(self._radius, self._area)
c = Circle()
print(c)
c.radius = 110
print(c)
c.area = 3
print(c)
は、私は興味があります。