123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # -*- coding: utf-8 -*-
- import yaml
- class Figure(object):
- def __init__(self, value, unit):
- self.value = value
- self.unit = unit
- def get_value(self):
- return self._value
- def set_value(self, value):
- self._value = value
- """ use property() instead of decorator to enable overriding """
- value = property(get_value, set_value)
- def get_unit(self):
- return self._unit
- def set_unit(self, unit):
- assert type(unit) is unicode
- self._unit = unit
- """ use property() instead of decorator to enable overriding """
- unit = property(get_unit, set_unit)
- class Distance(Figure):
- def __init__(self, value, unit):
- assert type(value) is float
- super(Distance, self).__init__(value, unit)
- @property
- def metres(self):
- if self.unit == 'km':
- return self.value * 1000
- else:
- raise Exception()
- class Sum(Figure):
- def __init__(self, value, currency):
- super(Sum, self).__init__(value, currency)
- def get_value(self):
- return super(Sum, self).get_value()
- def set_value(self, value):
- assert type(value) is float
- super(Sum, self).set_value(value)
- """ use property() instead of decorator to enable overriding """
- value = property(get_value, set_value)
- @property
- def currency(self):
- return self.unit
- def get_unit(self):
- return super(Sum, self).get_unit()
- def set_unit(self, currency):
- if currency == u'€':
- currency = u'EUR'
- assert type(currency) is unicode
- assert currency in [u'EUR']
- super(Sum, self).set_unit(currency)
- """ use property() instead of decorator to enable overriding """
- unit = property(get_unit, set_unit)
|