I think what you really want is: try: # this will fail and be caught # below, weeee import foobar
except ImportError, error: class foobarclass: def __getattr__(*args, **kargs): return None foobar = foobarclass() print foobar.bg foobar in your version is a class. By making it an instance, the __getattr__ method is properly called. -Chris On Fri, Oct 28, 2005 at 02:02:29PM -0400, Jeremy Moles wrote: > Jumping right into the code (which should speak for itself): > > # ----------------------------------- > > try: > # this will fail and be caught > # below, weeee > import foobar > > except ImportError, error: > class foobar: > @staticmethod > def __getattr__(*args, **kargs): > return None > > print foobar.bg > > # ----------------------------------- > > This doesn't work and I'm just curious as to why? I can, of course, make > __getattr__ non-static, instantiate a foolbar object, and everything > works; but, the "idea" above seems cleaner and whatnot. :) > > Am I misunderstanding something fundamental about the builtin __* > functions? Can they not be "static?" > > No rush on this, just curious. I'm using the following in a more general > way, and it works fine for now... :) > > # ----------------------------------- > > try: > import foobar > > except ImportError, error: > class Foobar: > def __getattr__(*args, **kargs): > return None > > foobar = Foobar() > > print foobar.bg > > # ----------------------------------- > > > -- > http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list