Hello I'm new to classes. And I hope the my question isn't too big.
I have electronic test equipment, but thought that a boat example would be easier. Can you help me untangle my class design? My problem is basically multiple inheritance, but I want to be flexible for how many will inherit. I'll put my example below and also as an attachment. I'm running Python 2.7 on Linux. Python is the BEST! Thanks Ken ------------ cut here ------------ #!/usr/bin/env python """ Variable Multiple Inheritance. email: ke...@kendy.org A boat has a body and is powered by any combination of Battery and/or Solar and/or Gas or None. If a boat is powered, it should have only one emergency_shutoff. """ class Body: """ A boat has a body """ def __init__(self, length): self.length = length class Power: """ Super Base class If a boat is powered. """ def __init__(self, emergency_shutoff): self.emergency_shutoff = emergency_shutoff def Emergency(): emergency_shutoff = True class Battery(Power): """ sub Child class """ def __init__(self, emergency_shutoff, battery_volt): self.battery_volt = battery_volt Power.__init__(self, emergency_shutoff) def ChargeBattery(): pass class Solar(Power): """ sub Child class """ def __init__(self, emergency_shutoff, solar_volt): self.solar_volt = solar_volt Power.__init__(self, emergency_shutoff) def DoSomethingSolar(): pass class Gasoline(Power): """ sub Child class """ def __init__(self, emergency_shutoff, liters): self.liters = liters Power.__init__(self, emergency_shutoff) class Boat1(Body): """ Sailboat """ pass class Boat2(Body, Gasoline, Battery): """ Gas, with battery backup powered """ def __init__(self, length, emergency_shutoff, liters, battery_volt): Body.__init__(self, length) Power.__init__(self, emergency_shutoff) Gasoline.__init__(self, emergency_shutoff, liters) Battery.__init__(self, emergency_shutoff, battery_volt) class Boat3(Body, Battery, Solar): """ Electric powered """ def __init__(self, length, emergency_shutoff, solar_volt, battery_volt): Body.__init__(self, length) Power.__init__(self, emergency_shutoff) Solar.__init__(self, emergency_shutoff, solar_volt) Battery.__init__(self, emergency_shutoff, battery_volt) def ShowAssembly(assembly_queue): for workon in assembly_queue: pass def main(): """ Acts like a container class""" assembly_queue = [] # A list of boats to be assembled, in order. assembly_queue.append(Boat2(30, False, 'half-full', 50)) assembly_queue.append(Boat3(25, False, 30, 10)) assembly_queue.append(Boat1(20)) ShowAssembly(assembly_queue) if __name__ == '__main__': main() ------------ cut here ------------
vary_mult_inherit.py
Description: Binary data
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor