Source code for aerocaps.units.area
from aerocaps.units.unit import Unit
__all__ = [
"Area"
]
area_conversions_from_m2 = {
'ft2': (1 / 0.3048) ** 2,
'mm2': 1000 ** 2,
'cm2': 100 ** 2,
'in2': (12 / 0.3048) ** 2,
}
[docs]
class Area(Unit):
[docs]
def __init__(self, m2=None, mm2=None, cm2=None, ft2=None, in2=None):
self._m2, self._mm2, self._cm2, self._ft2, self._in2 = None, None, None, None, None
if m2 is not None:
self.m2 = m2
elif mm2 is not None:
self.mm2 = mm2
elif cm2 is not None:
self.cm2 = cm2
elif ft2 is not None:
self.ft2 = ft2
elif in2 is not None:
self.in2 = in2
super().__init__(primary_unit="m2")
[docs]
def set_all(self):
"""After setting the area in m2, set the area for all other units"""
for k, v in area_conversions_from_m2.items():
setattr(self, f'_{k}', self._m2 * v)
@property
def m2(self):
return self._m2
@m2.setter
def m2(self, value):
self._m2 = value
self.set_all()
@property
def mm2(self):
return self._mm2
@mm2.setter
def mm2(self, value):
self._m2 = value / area_conversions_from_m2['mm2']
self.set_all()
@property
def cm2(self):
return self._cm2
@cm2.setter
def cm2(self, value):
self._m2 = value / area_conversions_from_m2['cm2']
self.set_all()
@property
def ft2(self):
return self._ft2
@ft2.setter
def ft2(self, value):
self._m2 = value / area_conversions_from_m2['ft2']
self.set_all()
@property
def in2(self):
return self._in2
@in2.setter
def in2(self, value):
self._m2 = value / area_conversions_from_m2['in2']
self.set_all()