Why doesn't this work? :)
Chris Lambacher
chris at kateandchris.net
Fri Oct 28 14:50:10 EDT 2005
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
More information about the Python-list
mailing list