I'm looking to roll my own simple object that can keep track of units for variables (maybe I'll be adding other attributes like tolerances too). Here is what I have so far:
class newVar():
    def __init__(self,value=0.0,units='unknown'):
        self.value=value
        self.units=units
    def __str__(self):
        return str(self.value) + '(' + self.units + ')'
    def __magicmethodIdontknow__(self): 
        return self.value
diameter=newVar(10.0,'m') #define diameter's value and units
print diameter #printing will print value followed by units
#intention is that I can still do ALL operations of the object
#and they will be performed on the self.value inside the object.
B=diameter*2 
Because I don't have the right magic method i get the following output
10.0(m)
Traceback (most recent call last):
  File "C:\Users\user\workspace\pineCar\src\sandBox.py", line 25, in <module>
     B=diameter*2 
TypeError: unsupported operand type(s) for *: 'instance' and 'int'
I guess i could override every magic method to just return self.value but that sounds wrong. Maybe I need a decorator?
Also, I know I can just call diameter.value but that seems repetative
 
     
     
     
    