簡體   English   中英

如何跟蹤實例屬性的值如何在多個方法中更改? Python3

[英]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)
  1. 您似乎實際上想要修改對象的屬性self.xself.y ,但您只是修改了一些臨時局部變量xy
  2. 您正在傳遞xy值,盡管它們不是必需的。

其他 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM