class Person:
    PopCount = 0
    def __init__(self, myName):
        self.name = myName
        self.age = 0
        self.spouse = None
        Person.PopCount = Person.PopCount + 1
        
    def SetAge( self, a ):
        self.age = a

    def SetName( self, name ):
        self.name = name

    def Marries( self, mySpouse):
        # spouse is another person
        self.spouse = mySpouse
        mySpouse.spouse = self

    def GetOlder(self):
        self.age = self.age + 1

    def Print(self):
        if (self.spouse != None) and (self.name < self.spouse.name):
            print(self.name, " is married to ", self.spouse.name )
        else:
            print( self.name )

    def __str__(self):
        return "%s is a good person"%self.name
            
def main():
    L = []
    
    x = Person("bob")
    x.SetAge( 64 )
    L.append(x)

    y = Person("Hermione")
    y.SetAge(18)
    y.GetOlder()
    L.append(y)

    z = Person( "Harry" )
    z.Marries(y)
    L.append(z)
    
    L.append( Person( "Dumbledore" ))
    L[-1].SetAge(116)

    for p in L:
        print(p)

    print( "Population count: ", Person.PopCount)
    
    
main()
