won't this raise an attribute error if the property doesn't exist? I would have thought you'd want `getattr(child, k, None)`