[IPython-User] Tab completion doesn't work on class/instance where __getattr__ has been overridden
Tue Mar 1 16:11:31 CST 2011
Jeremy Conlin skrev 2011-03-01 20:58:
> I have a class (subclassed from list) where I have overwridden the
> __getattr__ method as:
> def __getattr__(self, name):
> if name.startswith("__"): raise AttributeError
> def _multiplexed(*args, **kwargs):
> return [getattr(R, name)(*args, **kwargs) for R in self]
> return _multiplexed
> Now when I try to use tab completion, iPython just beeps at me and
> doesn't complete anything. If I remove this method from my class, I
> can do tab completion.
> Does the tab completion use __getattr__ somewhere? Can I add
> something to my definition to make tab completion work in iPython?
One way to customize which attributes are found by the completer is to
define the __dir__ method which essentially defines what should be
returned by a dir call.
More information about the IPython-User