我只是做了一个 foo 类来解释我的意思:
class Foo:
def __init__(self, fakevalue):
self.fv = fakevalue
@staticmethod
def make_a_foo():
return Foo(2)
def try_change_foo_value(self):
self = Foo.make_a_foo()
print "in change function, self.fv:", self.fv
if(__name__ =='__main__'):
foo_instance = Foo(1)
print "foo_instance.fv:", foo_instance.fv
foo_instance.try_change_foo_value()
print "foo_instance.fv:", foo_instance.fv
我预计:
foo_instance.fv: 1
in change function, self.fv: 2
foo_instance.fv: 2
但结果是:
foo_instance.fv: 1
in change function, self.fv: 2
foo_instance.fv: 1
我们可以看到 self 的值已经改变了,但是 instance 的值没有。为什么?以及如何解决这个问题?