我有这样的代码:在一个实例中,如何检测类成员是否被新实例成员替换?
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