a = Value(1.0, 's')
b = Value(1.000, 'ms')
a.value returns float 1.0. This should not happen. In fact .value should not even be user accessible. Propose .value -> ._value
You should never want to access the numeric value of a physical quantity without specifying the unit, so the value attribute should be hidden.
float(a) gives 1.0. This is bad for the same reason.
c = Value(1.1, 's')
d = Value(1000.0, 'ms')
c<d returns True!
Looks like only numeric part is being compared.
On it.