def __init__(self, node):
        """Create the basic structures to keep the attribute information.

        Reads all the HDF5 attributes (if any) on disk for the node "node".

        Parameters
        ----------
        node
            The parent node

        """

        # Refuse to create an instance of an already closed node
        if not node._v_isopen:
            raise ClosedNodeError("the node for attribute set is closed")

        dict_ = self.__dict__

        self._g_new(node)
        dict_["_v__nodefile"] = node._v_file
        dict_["_v__nodepath"] = node._v_pathname
        dict_["_v_attrnames"] = self._g_list_attr(node)
        # The list of unimplemented attribute names
        dict_["_v_unimplemented"] = []

        # Get the file version format. This is an optimization
        # in order to avoid accessing it too much.
        try:
            format_version = node._v_file.format_version
        except __HOLE__:
            parsed_version = None
        else:
            if format_version == 'unknown':
                parsed_version = None
            else:
                parsed_version = tuple(map(int, format_version.split('.')))
        dict_["_v__format_version"] = parsed_version
        # Split the attribute list in system and user lists
        dict_["_v_attrnamessys"] = []
        dict_["_v_attrnamesuser"] = []
        for attr in self._v_attrnames:
            # put the attributes on the local dictionary to allow
            # tab-completion
            self.__getattr__(attr)
            if issysattrname(attr):
                self._v_attrnamessys.append(attr)
            else:
                self._v_attrnamesuser.append(attr)

        # Sort the attributes
        self._v_attrnames.sort()
        self._v_attrnamessys.sort()
        self._v_attrnamesuser.sort()
dataset/ETHPy150Open PyTables/PyTables/tables/attributeset.py/AttributeSet.__init__