""" Callable demo for CTAC 2006 Python workshop

Ole Nielsen 2006
"""


class Dog:

    def __init__(self, name, owner):
        self.name = name
        self.owner = owner


    def __repr__(self):
        return 'Name: ' + self.name + '\t Owner: ' + self.owner


    def __call__(self, treat=None):
        if treat is not None:
            print 'I looove %s' %treat
        else:
            if self.owner == 'Moser':
                print 'Sofort!'
            else:    
                print 'No Treat! - Bark, grrrrr, bark!'
        

# Main program
dogs = []
dogs.append(Dog(name='Rex', owner='Moser'))
dogs.append(Dog(name='Bailey', owner='Ole'))
dogs.append(Dog(name='Lassie', owner='Moser'))


for dog in dogs:
    print dog

  
    dog()
    dog('whistle')
    dog('bone')

    print




        
