@classmethod
def from_other_object(cls, other_object, sub_face=False):
    """Initialize Surface boundary condition from an adjacent other object.

        Args:
            other_object: Another object (Face, Aperture, Door) of the same type
                that this boundary condition is assigned.  This other_object will be
                set as the adjacent object in this boundary condition.
            sub_face: Boolean to note whether this boundary condition is applied to a
                sub-face (an Aperture or a Door) instead of a Face. Default: False.
        """
    error_msg = (
        'Surface boundary conditions can only be assigned to objects with parent Rooms.'
        )
    bc_objects = [other_object.identifier]
    if other_object.has_parent:
        bc_objects.append(other_object.parent.identifier)
        if sub_face:
            if other_object.parent.has_parent:
                bc_objects.append(other_object.parent.parent.identifier)
            else:
                raise AttributeError(error_msg)
    else:
        raise AttributeError(error_msg)
    return cls(bc_objects, sub_face)
