概述:嵌套對象和SETATTR&GETATTR(是的,那就是時間)
class Inner(object):
def __init__(self, x):
self.x = x
class Outer(object):
def __init__(self, z):
self.inner = Inner(z)
o = Outer(10)
現在,我想外部對象的行爲透明 - 在o
設置的任何屬性都應當在o.inner
設置,同爲閱讀:o.something
應該返回,其實值爲o.inner.sommething
。有點像代理或中繼。
__getattr__
爲Outer
看似簡單&作品:
def __getattr__(self, item):
return getattr(self, item)
我將如何處理__setattr__
?我無法想出任何不會導致遞歸錯誤並讓我恨自己的事情。
或者是概念本身有缺陷?
(我試過另一種方法是使Outer
的Inner
一個子類 - 這並沒有真正起到美觀本@classmethods
,更不用說IDE會迷路內的 - 不能夠解決一些屬性讓我們離開那現在,也許呢?)
你是不是指'self.inner = Inner(z)'?另外,你的getattr方法是否從Inner()返回數據?它的寫法是,它看起來像只是引用Outer。 – gfortune 2012-02-07 17:17:12
是的 - 它確實會返回。修正了兩個,謝謝! – ntl0ve 2012-02-07 17:20:35