Wouldn't get_declaring_class return None if the attr was not declared?
If so, why would we still need the has_attribute func?