Skip Montanaro wrote: > For various reasons, I have a class which delegates much functionality to > a singleton instance of another class (exposed by pybind11) instead of > inheriting from that class. So, the construction looks like this (this is > in Python 2.7): > > from someothermodule import SomeOtherClass as _SomeOtherClass > > class SomeClass(object): > _instance = None > > def __init__(self): > if self.__class__._instance is None: > self._instance = _SomeOtherClass.instance() > > def __getattr__(self, key): > return getattr(self._instance, key) > > ... and so on ... > > If someone tries help(SomeClass) or dir(SomeClass) today, none of the > attributes or docstrings defined in SomeOtherClass are shown.
If being helpful really is the only purpose of the metaclass you can implement a SomeClass.__dir__() method instead: def __dir__(self): names = dir(self._instance) # <snip whatever post-processing you want> return names -- https://mail.python.org/mailman/listinfo/python-list