这个问题的目的是了解python中的内置函数是如何“内置”的。
如果我覆盖 setattr 方法,我该如何取回它?例如,我有这样的“工作”类:
class WorkingSetAttr:
def a(self): return 'a'
def b(self): return 'b'
和这样的“非工作”类:
class NonWorkingSetAttr:
def a(self): return 'a'
def b(self): return 'b'
def __setattr__(self,a,b): pass
现在我创建对象 w 和 n,并运行以下命令:
w = WorkingSetAttr()
setattr(w,'a',w.b)
print "w.a = %s, w.b = %s" % (w.a(), w.b())
n = NonWorkingSetAttr()
setattr(n, 'a', n.b)
print "n.a = %s, n.b = %s" % (n.a(), n.b())
输出是:
w.a = b, w.b = b
n.a = a, n.b = b
请注意,na 应该打印“b”,但它会打印“a”,因为 setattr 不会更改属性。
问题是:我应该如何修改对象n 以便它像对象w 一样工作。请注意,我的意思是对象,而不是类。