我只是做一个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
我们可以看到自我价值有已经改变了,但实例值没有。 为什么?以及如何解决这个问题?
请注意,在python中编写一个只改变属性值的函数实际上并非惯用。 *通常*直接更改属性会更干净:'instance.fv = 2',而不是'instance.change_fv(2)'。 – mgilson
@mgilson感谢您指出这一点,您绝对正确。我已更新以反映。 –
谢谢!我知道了! – Yang