假設我在Python中定義了以下類。Class實例的奇怪行爲 - 更新內部變量
class test():
def __init__(self):
self.x = 0
self.y = self.x ** 2
def check(self):
self.x = self.x + 1
print self.x
print self.y
這裏我有兩個內部變量x和y。在初始化中,我設置了$$ y = x^2 $$。現在,每次我調用方法check()
時,它都會將x的值增加1:self.x = self.x + 1
。但是,當我打印值x正確地增加1,但y始終保持爲0。 (不應該是x^2 ??)怎麼回事?
沒有什麼是錯的。初始化實例後,您永遠不會更改'self.y',因此它保留了它始終具有的相同值。 – kindall
我強烈推薦Ned Batchelder的「[關於Python名稱和值的事實和神話](http://nedbatchelder.com/text/names1.html)」(26分鐘[來自PyCon US 2015的視頻](https:// www。 youtube.com/watch?v=_AEJHKGk9ns)),瞭解Python變量和賦值語句與大多數其他語言完全不同的速成課程。 (具體來說,名稱總是指向值,_永遠指向表達式或其他名稱。) –