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
自己の値はすでに変更されていることがわかりますが、インスタンスの値は変更されていません。なんで?そして、この問題を解決する方法は?