class Person():
    def __init__(self, name, age=None, friends=None):
        self.name = name
        self.age = age
        if friends is None:
            friends = []
        self.friends = PersonFriendList(friends)


class PersonFriendList(list):
    def __init__(self, *args):
        super(PersonFriendList, self).__init__(*args)
        self.DebugPrint('constructed with {}'.format(str(*args)))

    def DebugPrint(self, string):
        print('{}(): {}'.format(self.__class__.__name__, string))

    def append(self, *args):
        super(PersonFriendList, self).append(*args)
        self.DebugPrint('appending {}'.format(str(*args)))

me = Person('Mr. Me')
you = Person('Ms. You')

me.age = 42
me.friends.append(you)
