def __getattr__(self, key): self.__lazyinit__ and self.__lazyinit__() # Maybe the lazyinit added it if key in self.__dict__: return self.__dict__[key] # This function lazy-loads the shellcodes if key in self._shellcodes: real = internal.make_function(key, self._shellcodes[key], self._dir) setattr(self, key, real) return real for m in self._context_modules(): try: return getattr(m, key) except AttributeError: pass raise AttributeError("'module' object has no attribute '%s'" % key)