#energy functions to illustrate inheritance, Ellen Williams, 12/02/01 from math import * class Energy: #all inputs and outputs in mks units g=9.8 def __init__(self, m=1., v=0., h=0.): self.m=m self.v=v self.h=h def kin(self): ek=0.5*self.m*self.v**2 return ek def pe(self): pe=self.m*self.g*self.h return pe def tot(self): etot=self.pe()+self.kin() return etot fall = Energy(m=1., v=3., h=10.) print fall.m, fall.v, fall.h, fall.g print "\n" print fall.kin(), fall.pe(), fall.tot() class Energycgs(Energy): #all inputs and outputs in cgs units g=980. fallcgs=Energycgs(m=1000., v=300., h=1000) print "\n" print fallcgs.kin(), fallcgs.pe(), fallcgs.tot(), fallcgs.tot()*1e-7 class CGStoMKSEnergy(Energy): m=1. v=0. h=0. def __init__(self,mc=1000., vc=0., hc=0.): self.mc=mc self.vc=vc self.hc=hc def mks(self): self.m=self.mc/1000. self.v=self.vc/100. self.h=self.hc/100. return self change=CGStoMKSEnergy(mc=1000., vc=300., hc=10000.) print "\n" print change.m, change.mc, change.v, change.vc print change.mks().v print change.g, change.h, change.pe() class CGStoMKSEnergy2(Energy): mc=1000. vc=0. hc=0. def mks(self): self.m=self.mc/1000. self.v=self.vc/100. self.h=self.hc/100. return self c4=CGStoMKSEnergy2(0,0,0) print c4.m, c4.mc c4.mc=3000. c4.vc=300. c4.hc=5000. print c4.v, c4.vc c4.mks() print c4.v, c4.vc print c4.kin(), c4.pe(), c4.tot()