def __init__(self,
                 default_str=str, 
                 recursive_str=make_shallow_recursive_str("...")):
        """
        DeepStr: stringify_function handler -> stringify_function
        
        Creates a new DeepStr.  Once constructed, you can call as
        if this were a function that takes objects and returns
        strings.

        default_str is the default function used on types that this
        does not recognize.  It must be able to take in an object and
        return a string.

        If we hit structure that's already been traversed,
        we use recursive_str on that structure."""
        self.handlers = []
        self.default_str = default_str
        self.recursive_str = recursive_str

        DeepStr: stringify_function handler -> stringify_function
        
        Creates a new DeepStr.  Once constructed, you can call as
        if this were a function that takes objects and returns
        strings.

        default_str is the default function used on types that this
        does not recognize.  It must be able to take in an object and
        return a string.

        If we hit structure that's already been traversed,
        we use recursive_str on that structure.
recipes/Python/498261_Deeply_applying_str_across/recipe-498261.py