2016-10-30 7 views
1

私は(幾何学的な)円を表し、それ自身のデータを印刷できるクラスの最も簡単な例を実装しようとしています。2つの "同期"変数を持つクラスの最短の例

Circleは、2つの変数、self.radiusself.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) 

は、私は興味があります。

答えて

関連する問題