【问题标题】:Changing a variable in one object is updating same variable of same class's another object更改一个对象中的变量正在更新同一类的另一个对象的相同变量
【发布时间】:2020-01-27 10:06:29
【问题描述】:

我编写了一个 Node 类并创建了三个对象,当我在第一个对象中分配一个变量的值时,第二个对象的相同变量正在更新,第三个对象也是如此。这是代码,

class Node:
    nodes_neighbour = []
    nodes_neighbour_loc = []

    def __init__(self,location):
        self.location = location

    def addNeighbours(self,neighbours):
        i = 0
        while(i < len(neighbours)):
            self.nodes_neighbour.append(neighbours[i])
            self.nodes_neighbour_loc.append(neighbours[i].location)

            i = i + 1

    def setCosts(self,g,f):
        self.g = g
        self.f = f



n1 = Node([10,10])
n2 = Node([50,10])
n3 = Node([90,10])

n1.addNeighbours([n2,n3])
print(n2.nodes_neighbour_loc)

它正在打印, [[50, 10], [90, 10]]

有什么问题?? 在此先感谢:)

【问题讨论】:

    标签: python class oop


    【解决方案1】:

    您的成员 nodes_neighbournodes_neighbour_loc 是该类的实例并且是共享的。你可能想要这个:

    class Node:
    
        def __init__(self,location):
            self.location = location
            self.nodes_neighbour = []
            self.nodes_neighbour_loc = []
    

    【讨论】:

    • 谢谢,它成功了。我不知道我们可以为所有类对象使用全局类变量。
    • 上述规则是否适用于所有数据类型,还是仅适用于少数数据类型? @quamrana
    猜你喜欢
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2019-05-02
    • 2013-02-17
    相关资源
    最近更新 更多