[英]How do I keep track of how an instance attribute's value is changed across multiple methods? Python3
我是 Python 的新手,我正在學習面向 object 的編程。 但是,我有一個問題在任何地方都找不到答案
假設我有以下示例:
class Node:
def __init__(self):
self.x1 = 10
self.y1 = 100
def thing1(self, x, y):
x += 5
y += 10
print(x, y)
def thing2(self, x, y):
x += 10
print(x)
node = Node()
def main():
node.thing1(node.x1, node.y1)
node.thing2(node.x1, node.y1)
main()
運行此代碼時得到的 output 如下:
15 110
20
但我想得到的 output 是:
15 110
25
出於某種原因,python 不跟蹤實例變量的值如何跨多個方法更改
我知道我可以直接在方法中將值更改為實例屬性,這將起作用,但我很好奇我在上面提供的示例中對這個問題的解決方案。
如果您能幫助我解決這個問題,我將不勝感激,因為它讓我困惑了很長一段時間。
這個function有兩個問題:
def thing1(self, x, y):
x += 5
y += 10
print(x, y)
self.x
和self.y
,但您只是修改了一些臨時局部變量x
和y
。x
和y
值,盡管它們不是必需的。其他 function 也有同樣的問題。
這將是更正后的代碼:
class Node:
def __init__(self):
self.x = 10
self.y = 100
def thing1(self):
self.x += 5
self.y += 10
print(self.x, self.y)
def thing2(self):
self.x += 10
print(self.x)
def main():
node = Node()
node.thing1()
node.thing2()
if __name__ == "__main__":
main()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.