caesar0301 / treelib

An efficient implementation of tree data structure in python 2/3.
http://treelib.readthedocs.io/en/latest/
Other
801 stars 185 forks source link

Why is `_reader` a member variable instead of a local variable? #91

Open GalacticStarfish opened 6 years ago

GalacticStarfish commented 6 years ago

The self._reader member variable is only used in two methods of the tree class; __str__() and show(), In fact, the methods are short enough that I will just display the code below:

def __str__(self):
    self._reader = ""
    def write(line):
        self._reader += line.decode('utf-8') + "\n"
    self.__print_backend(func=write) 
  return self._reader

def show(self, nid=None, level=ROOT, idhidden=True, filter=None,
         key=None, reverse=False, line_type='ascii-ex', data_property=None):
    self._reader = ""

    def write(line):
        self._reader += line.decode('utf-8') + "\n"

    try:
        self.__print_backend(nid, level, idhidden, filter,
            key, reverse, line_type, data_property, func=write)
    except NodeIDAbsentError:
        print('Tree is empty')

    print(self._reader)

I am wondering why _reader is a member variable at all, and not simply a local variable. In both functions, _reader is initialized to be the empty string, so its previous contents are wiped out.

leonardbinet commented 4 years ago

I agree with that