我不知道我是否遗漏了一些非常明显的东西,但我发现这种行为令人惊讶。
编辑: 好的,所以这里是一个例子,我不使用任何默认参数 - 不像链接副本 - 它仍然表现如此。有人可以解释一下原因吗?
class Manager(object):
@classmethod
def calculatesomething(cls, array, attr):
array.append(attr)
return 1
class MyClass(object):
def __init__(self, array):
self.array = array
def __getattr__(self, attr):
variable = Manager.calculatesomething(self.array, attr)
return variable
a = MyClass(['one', 'two', 'three'])
print a.array
print a.four
print a.array
输出:
['one', 'two', 'three']
1
['one', 'two', 'three', 'four']
我的期望:
['one', 'two', 'three']
1
['one', 'two', 'three']
就像我们有一个简单的功能一样:
def f(a):
a += 1
return a
a = 1
print a
print f(a)
print a
我期待:
1
2
1
这正是我得到的。