#class Rodent(object):
    
    #def __init__(self...):
        #...
        #...
        
#class Bat(Rodent):s
    #def __init__(self, ..., wingspan):
        ##the Rodent.__init__ code
        #self.wingspan = wingspan



module_variable = 0

def module_function():
    return "I am a module function"


class ExampleClass(object):
    
    #Note, I also exist as an instance_variable.
    class_variable = 0
    
    def __init__(self, x):
        self.object_variable = x
        
    def example_method(self):
        print self.object_variable
        
#y = 10        
    
class MyError(Exception):
    def __init__(self, msg, brokenList):
        self.msg = msg
        self.brokenList = brokenList
        
    def __str__(self):
        return self.msg
        
try:
    raise MyError('I expect this list to have 4 elements, it has this many %s' % len([1,2,3]), [1,2,3])

except MyError, e:
    print str(e)
    print e.brokenList
    #print "y is not really defined"
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
class ClassA(object):
    
    def __init__(self, x):
        self.x = x
    
    
    def words(self):
        print 'blah' + str(self.x)
        
class ClassB(ClassA):
    
    def words(self):
        #ClassA.word()
        #ClassA.words(self)
        super(ClassB, self).words()
        print 'more blah'
        
    def words2(self):
        print 'BBBB'
        
class ClassC(ClassB):
    
    def words(self):
        print 'blahC'

class ClassD(ClassA):
    
    def words(self):
        print 'blahC'


        
        
    #def class_function():
        #print class_variable