Question about __getattribute__/__getattr__

Mark McEahern marklists at mceahern.com
Mon Sep 30 18:22:02 EDT 2002


[Joao Prado Maia]
> My question is, how do I get the actual argument list from inside
> __getattr__, so I can create an unique method/argument list signature for
> the cached files ? :)

__getattr__ may not be the ticket.  I can sketch one possibility, but sadly
I don't have time to flesh it out fully:

When you init your Cache class, dynamically build proxy methods for each
method in the cached class.  Something like this:

  import inspect

  class Foo(object):

    def do_something(self, *args, **kwargs):
      # whatever

  class Cache(object):

    def __init__(self, cached_class):
      self._inst = cached_class()

      for m in inspect.getmembers(self._inst, inspect.ismethod):
        # m is a tuple, m[0] is the method name, m[1] is the method
        setattr(self, m[0], MemoizedFunction(m[1]))

Cheers,

// m





More information about the Python-list mailing list