On Wed, Apr 20, 2016 at 1:53 PM, kirby urner <kirby.urner@gmail.com> wrote:

<< SNIP >>
 
I like to say the class is a "mother ship" and serves as a kind of "home base" or "platform".  How about an "amusement park"? 


Another one to limber up on:

# -*- coding: utf-8 -*-
"""
Created on Wed Apr 20 15:27:35 2016

@author: Kirby Urner
Carnival Guy (aka "geek", luvs chicken)

"""

class Blech(Exception):
    pass

class AmusementPark:  # euphemism for carnival
  
    @classmethod
    def ferris_wheel(A, me):
        me.sick = False
        return me
      
    @classmethod
    def roller_coaster(A, me):
        # moral: don't eat before riding the roller coaster
        if len(me.stomach) > 0:
            me.sick = True    # sick state persists
            me.stomach = []  # ... this should help though
        return me
      
    @classmethod
    def make_rider(A):
        return A()
  
    def __init__(self):  # born to ride
        self.stomach = []
        self.sick = False
      
    def __call__(self, food): # born to eat
        if self.sick:
            raise Blech("too sick to eat")
        self.stomach.append(food)

    def __repr__(self):
        if self.sick:
            return "I don't feel so good"
        else:
            return "I feel fine"
  

A1 = AmusementPark
alice = A1.make_rider()  # a child of her profession


A1.ferris_wheel(alice)
print("Sick after ferris wheel:", alice)

# time to eat!
try:
    alice("cotton candy")
    alice("diet doctor pepper")
    alice("hot dog with onions")
except:
    print("I'll eat later...")

A1.roller_coaster(alice)
print("Sick after roller coaster?", alice)  # it always happens

# time to eat!
try:
    alice("popcorn")
    alice("gum drops")
    alice("another diet doctor pepper")
except:
    print("I'll eat later...")

Runtime:

runfile('/Users/kurner/Documents/classroom_labs/having_fun.py', wdir='/Users/kurner/Documents/classroom_labs')

Sick after ferris wheel: False
Sick after roller coaster? True
I'll eat later...