Peter Otten <__pete...@web.de> schrieb am Mi., 17. Mai 2017 um 09:31 Uhr:
> jeanbigbo...@gmail.com wrote: > > > I am trying to write some recursive code to explore the methods, classes, > > functions, builtins, etc. of a package all the way down the hierarchy. > > > 2) I ultimately need to create inputs to explore_pkg programmatically en > > route to a recursively called function. The only way I can think of is > to > > use strings. But, passing a string such as 'np.random' into explore_pkg > > correctly returns the methods/... associated with the string and not the > > module np.random > > > > e.g. explore_pkg('np.random') will NOT do what I want > > > > explore_pkg(eval('np.random')) does work but I understand eval is > > dangerous and not to be trifled with. > Hello, with a Class you can do it also. import os class Module: def __init__(self, module): self._name = module.__name__ print('Got module', self._name) self._file = module.__file__ if hasattr(module, '__file__') else '(built-in)' self._module = module def __repr__(self): return "<module '{}' from '{}'>".format(self._name, self._file) def __getattr__(self, key): ret = getattr(self._module, key) if isinstance(ret, types.ModuleType): print('Attribute {} is in the module {}'.format(key, self._name)) return Module(ret) else: print('Attribute {} is not a module. It\'s a {}'.format(key, type(ret))) return ret def __getitem__(self, key): return self.__getattr__(key) os_wrapped = Module(os) sub1 = 'path' sub2 = 'sys' sub3 = 'version' value = os_wrapped[sub1][sub2][sub3] print(value) Maybe this code breaks other stuff. Also error handling is not present. Greetings Andre -- https://mail.python.org/mailman/listinfo/python-list