class Animal(object): 'an abstraction of animal' numDogs = 0 def __init__(self, s = 'dog', l = 'woof'): 'the constructor' self.species = s self.lang = l if self.species.lower() == 'dog': Animal.numDogs += 1 def setSpecies(self, s): 'set the species of the animal' if self.species.lower() == 'dog': Animal.numDogs -= 1 self.species = s if self.species.lower() == 'dog': Animal.numDogs += 1 def setLanguage(self, l): 'set the language of the animal' self.lang = l def speak(self): 'make the animal speak' return 'I am a {} and I {}.'.format(self.species, self.lang) def __repr__(self): 'the representation' return 'species = {}, language = {}'.format(self.species, self.lang) def __str__(self): 'the string representation' return self.speak()