我有這樣的代碼:在一個實例中,如何檢測類成員是否被新實例成員替換?
class ReplaceableClass(Object):
def __init__(self, x):
self.x = [x]
def movedata(self, old):
self.x = old.x + self.x
class Example(Object):
myThing = ReplaceableClass(1)
e = Example()
e.myThing = ReplaceableClass(2)
它如何能工作,如果我取代由以下塊中的最後一行?
myNewThing = ReplaceableClass(2)
myNewThing.movedata(e.myThing)
e.myThing = myNewThing
所以e.myThing.x
等於[1,2]而不是[2]。
我試圖通過描述符,但因爲它會導致一個無限循環無法分配一個新的對象:
class ReplaceableClass(Object):
[...]
def __set__(self,a,b):
for p in dir(a):
if self==getattr(a,p):
self.movedata(b)
這可能*可能*但它肯定不會是慣用的,明智的,可維護的,理智的,有用的或品味良好的。 – delnan 2012-03-07 17:38:00
對不起,我的問題太模糊了,不知道它可能有多有用。 – DiThi 2012-03-07 17:52:37
無論它可能出現多麼有用,其他缺點都會將其取消,並導致淨虧損。記住:顯式比隱式更好。 – delnan 2012-03-07 18:00:44