Een fysieke grootheid wordt gekenmerkt door een reëel getal en een eenheid. Bouw een klasse FysiekeGrootheid
waarbij je per object waarde en eenheid bijhoudt. Programmeer volgende methoden:
float) en dimensie (string)
get_waarde() en get_dimensie()
set_waarde() voor de waarde
__str__() die volgend formaat levert : [waarde spatie eenheid]. Gebruik hierbij
voor de waarde de formateeroptie %f
__repr__ met als enige voorwaarde dat het object bekomen door eval(repr(a)) dezelfde
waarde en dimensie heeft als het object a
+ en -: indien de operandi verschillende eenheden hebben, levert die een
exceptie, namelijk AttributeError, indien ze dezelfde dimensie hebben, leveren deze operatoren een nieuw object met dezelfde dimensie,
en als waarde respectievelijk de som en het verschil van de waarden van de operandi
+ en - : de unaire operator + levert een nieuw object met zelfde inhoud op, de operator $$\verb!-!$$ een
nieuw object met tegengestelde waarde
<, ≤, <, >
,≥, ==, != zijn enkel van toepassing op objecten met zelfde dimensie. Zijn de operandi niet van
dezelfde dimensie, dan levert dit een AttributeError. Indien ze wel van dezelfde dimensie zijn, dan wordt de operator toegepast op het waarde-veld van
de operandi. Hierbij wordt voor de operator == gebruik gemaakt van de NumPy-functie np.allclose(),
met standaardargumenten. De operator != definieer je zodanig dat objecten die niet voldoen aan == ,
wel voldoen aan !=.
Voorbeeld
a = FysiekeGrootheid(3.0, 'm')
b = FysiekeGrootheid(5.0, 'm')
c = FysiekeGrootheid(10.0, 's')
a.get_waarde() = 3.0
a.get_dimensie() = m
a.set_waarde(4.0)
a.get_waarde() = 4.0
str(a) = [4.000000 m]
str(b) = [5.000000 m]
a1 = eval(repr(a))
a1.get_waarde() = 4.0
a1.get_dimensie() = m
b1 = eval(repr(b))
b1.get_waarde() = 5.0
b1.get_dimensie() = m
a + b = [9.000000 m]
+a + b = [9.000000 m]
a + (+b) = [9.000000 m]
a - b = [-1.000000 m]
a - (-b) = [9.000000 m]
(+a) - (+b) = [-1.000000 m]
a == b = False
a == +a = True
a != b = True
a < b = True
a >= b = False
try:
s = a + c
except(AttributeError):
s= 'AttributeError')
print(s) = AttributeError