def __getattr__(self, attr):
        # custom node types add additional methods to the _additional_attrs_ dict
        # that are returned here.
        # They're not simply added into the class's __dict__ since it's an extension type
        # and so the type itself is immuatable.
        try:
            value = self._additional_attrs_[attr]
            try:
                return value.__get__(self)
            except AttributeError:
                pass
            return value
        except __HOLE__:
            raise AttributeError(attr)

    # 
    # Hook in arithmetic operators. (These are added to _additional_attrs_ in nodetypes.py)
    # NB: Cython arithmetic operator methods behave differently; there are no __r*__ variants.
    # See: http://docs.cython.org/src/userguide/special_methods.html#arithmetic-methods
    #
dataset/ETHPy150Open manahl/mdf/mdf/nodes.py/MDFNode.__getattr__