'Create a new collection with keying provided by keyfunc.
keyfunc may be any callable any callable that takes an object and
returns an object for use as a dictionary key.
The keyfunc will be called every time the ORM needs to add a member by
value-only (such as when loading instances from the database) or
remove a member.  The usual cautions about dictionary keying apply-
``keyfunc(object)`` should return the same output for the life of the
collection.  Keying based on mutable properties can result in
unreachable instances "lost" in the collection.'

def __init__(self, keyfunc):

    self.keyfunc = keyfunc
