擅长:python、mysql、java
<p>下面的代码可以满足您的需要,但是:1)它很难看;2)它不是线程安全的;3)它陷入循环,直到<code>Inner</code>中的某个方法引发异常(这不是由于实现,而是由于最初发布的想法);4)避免使用它的其他原因:)</p>
<pre><code>class Inner:
def foo(self):
print "foo"
def bar(self):
print "bar"
class Outer:
def __init__(self):
self.inner = Inner()
def __getattr__(self, name):
ret = getattr(self.inner, name)
def wrapper(*args):
try:
ret(*args)
except:
del self.inner
self.inner = Inner()
updated = self.__getattr__(name)
updated(*args)
return wrapper
def blah(self):
print "Blah"
outer = Outer()
outer.foo()
outer.bar()
outer.blah()
outer.nosuchattr()
</code></pre>