<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def is_attribute_visible(self, key):
 """ Returns True if an attribute is visible If attribute is an instance of AttributeFilter, it returns True if all attributes of the sub filter are visible. :param key: name of attribute to check :type key: str :return: whether attribute is visible :rtype: bool """

        if key in self:
            attribute_status = getattr(self, key)
            if isinstance(attribute_status, bool) and attribute_status is True:
                return True
            elif isinstance(attribute_status, self.__class__) and attribute_status.are_any_attributes_visible():
                return True

        return False