class Cat ():
    
    def __init__(self, name = "fluffy"):
        self.name = name

    def __repr__(self):
        return ('<Cat named {}>'.format(self.name))

    def speak(self):       
        print("meow")

    def setName(self, name):
        self.name = name
        
    def getName(self):
        return self.name
    
class Dog ():

    def __init__(self, name = "rover"):
        self.name = name
        
    def __repr__(self):
        return ('<Dog named {}>'.format(self.name))
    
    def speak(self):
        print("woof")

    def fetch(self):
        print("I am fetching")

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name


def testCatDog():
    c1 = Cat()
    c2 = Cat()
    d = Dog("spot")
    for animal in [c1, c2, d]:
        print(animal.getName())
        animal.speak()
    
