def __getattr__(self, attr):
        try:
            return getattr(self.edgeInfo, attr)
        except __HOLE__:
            if isinstance(self.edgeInfo, types.DictType):
                # Treat edgeInfo as an attribute dictionary.
                return self.edgeInfo[attr]
            raise AttributeError(attr)

    # Should we define setattr here too, to allow users to add new attribute
    # values? The problem is setattr is painful to implement due to the
    # recursive reference problem.
dataset/ETHPy150Open cjlee112/pygr/pygr/mapping.py/Edge.__getattr__