<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def retrieve_width(self, signum=None, frame=None):
 """ Stores the terminal width into ``self.width``, if possible. This function is also the SIGWINCH event handler. """

        for method_name, args in self.strategies:
            method = getattr(self, "from_" + method_name)
            width = method(*args)
            if width and width > 0:
                self.width = width
                break # Found!
        os.environ["COLUMNS"] = str(self.width)