我只是做一個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