# # demo file for objects and inheritance # make a class of vehicles, which is inherited # from by the car and truck classes # pmb, 10/15/02 # put everything for a vehicle here class vehicle: # initialize method. called when vehicle is created def __init__(self): self.gas = 10 self.v = 0 self.pos = 0 print "made a vehicle" # fill up gastank def gasUp(self,fuel): self.gas = self.gas + fuel print "vehicle gassed Up" # go faster def goFaster( self ): self.v = self.v + 1 # stop! def stop( self ): self.v = 0.0 # set mass of vehicle def setMass ( self, m ): self.mass = m # update position def updatePos ( self ): if ( self.gas > 0 ): self.pos = self.pos + self.v * 0.04 self.gas = self.gas - 0.5 self.mass = self.mass -0.5 else: self.v =0; print "Out of gas!" # now put stuff just needed for a car class car(vehicle): # init- called automatically when its made def __init__(self): # must call init for superclass manually vehicle.__init__(self) self.passengers=[] print "made a car" # add a new passenger def addPass(self, newP): self.passengers.append( newP ) self.mass = self.mass + newP.mass print "added passenger ", self.passengers # things just needed for a truck class truck(vehicle): # next line is a docstring # print it with print truck.__doc__ "The truck class- inherits from vehicle. addCargo is additional method." def __init__(self): # make a vehicle manually vehicle.__init__(self) self.cargo=[] print "made a truck" # add some cargo def addCargo(self, stuff ): self.cargo.append( stuff ) self.mass = self.mass + stuff.mass print "added cargo ", self.cargo # a superclass of things to carry class things: "A superclass of carryable items." # this can probly go away def __init__(self): return def setMass( self, m ): self.mass = m # two inheriting subclasses, passengers and cargo class passenger( things ): "A class of passengers. Inherits from things class." def __init__(self): things.__init__(self) # passengers ahve names def setName(self, n ): self.name = n #cargo inherits from things class cargo(things ): def __init__(self): things.__init__(self) # cargo has names too def setName(self, n ): self.name = n # main program here # # make some passengers joe = passenger() joe.setMass ( 150 ) joe.setName("Joe") print joe.__doc__ mary = passenger() mary.setMass ( 130 ) mary.setName ("Mary") # make some cargo widgets = cargo() widgets.setMass ( 300 ) gadgets = cargo() gadgets.setMass ( 500 ) # make a car toronado= car() toronado.setMass( 10000 ) toronado.addPass( joe ) toronado.goFaster() toronado.goFaster() # make another car vwbug = car() vwbug.setMass ( 1500 ) vwbug.addPass ( mary ) vwbug.goFaster() # make a truck semi = truck() semi.setMass ( 80000 ) semi.addCargo(widgets) semi.addCargo(gadgets) semi.goFaster() print semi.__doc__ # ontheroad= [ toronado, vwbug, semi ] while semi.gas > 5: for aVehicle in ontheroad: print "vehicle mass ",aVehicle.mass, print "velocity ", aVehicle.v aVehicle.updatePos() aVehicle.goFaster()