Esempio n. 1
0
if __name__ == '__main__':

    from types import ModuleType

    dummy = ModuleType('dummy')
    for_dummy = Redefiner(vars(dummy))

    dumb_msg = 'NOT dummy.Dub'
    Dumb = dumb_msg

    @for_dummy
    class Dumb(dict):
        def closure(fast_attr=Redefiner(vars())):

            dict_attr = dict.__getattribute__

            @fast_attr
            def __missing__(self, key):
                try:
                    return dict_attr(self, key)
                except AttributeError:
                    raise KeyError(key) from None

        closure()

    assert Dumb is dumb_msg
    #    assert 'Dumb' not in globals()
    d = dummy.Dumb()
    d.x = 'x'
    print(d['x'])