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