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
)
waarde
en dimensie
die leesbaar en schrijfbaar zijn
__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 !=
.
a = FysiekeGrootheid(3.0, 'm') b = FysiekeGrootheid(5.0, 'm') c = FysiekeGrootheid(10.0, 's') print(a.waarde) # 3.0 print(a.dimensie) # m a.waarde = 4.0 print(a.waarde) # 4.0 print(str(a)) # [4.000000 m] print(str(b)) # [5.000000 m] a1 = eval(repr(a)) print(a1.waarde) # 4.0 print(a1.dimensie) # m b1 = eval(repr(b)) print(b1.waarde) # 5.0 print(b1.dimensie) # m print(a + b) # [9.000000 m] print(+a + b) # [9.000000 m] print(a + (+b)) # [9.000000 m] print(a - b) # [-1.000000 m] print(a - (-b)) # [9.000000 m] print((+a) - (+b)) # [-1.000000 m] print(a == b) # False print(a == +a) # True print(a != b) # True print(a < b) # True print(a >= b) # False try: s = a + c except(AttributeError): s= 'AttributeError' print(s) # AttributeError