class Person:
    """ People with names.
          >>> str(Person('John'))
          'Person: John'
    """
    
    population = 0
    
    def __init__(self, name="John Smith"):
        self.name = name
        Person.population = Person.population + 1

    def get_name(self):
        return self.name
    
    def set_name(self, newname):
      self.name = newname
    
    def __str__(self):
        return "Person: " + self.name


class Faculty(Person):

    def __init__(self, name):
        Person.__init__(self, name)

    def __str__(self):
        return "Faculty: " + self.name

class Student(Person):

    def __init__(self, name):
        Person.__init__(self, name)

    def __str__(self):
        return "Student: " + self.name

def _test():
    from doctest import testmod
    testmod()

def main():
    sally = Person("Sally")
    dr_bob = Faculty("Dr. Bob")
    fred_freshman = Student("Fred Freshman")
    print sally
    print dr_bob
    print fred_freshman
    print "total population is " + str(Person.population)

if __name__ == '__main__':
    _test()
    main()

syntax highlighted by Code2HTML, v. 0.93pm6