繁体   English   中英

将项目添加到对象列表中

[英]add items to the list of an object

class bag:

    items = []

    def add_item(self,x):
        self.items.append(x)


if __name__ == "__main__":

    bag1 = bag()
    bag2 = bag()

    bag1.add_item("water")
    print(bag2.items)
    

我正在尝试向 bag1 添加水,但我不知道为什么“bag1.add_item("water")”会影响 bag2

class bag:

    def __init__(self):
        self.items = []

    def add_item(self,x):
        self.items.append(x)


if __name__ == "__main__":

    bag1 = bag()
    bag2 = bag()

    bag1.add_item("water")
    print(bag2.items)

您所要做的就是添加def __init__(self) 在类声明中声明变量使它们成为“类”成员而不是实例成员。 __init__方法中声明它们可确保在对象的每个新实例旁边创建成员的新实例,这是您正在寻找的行为。

请注意, items = []已声明为类变量,因此该类的所有实例将共享items的相同内存位置。 对于每个实例都有自己的items列表,您需要使用关键字self ,例如:

class bag:

    def __init__(self):
        self.items = []

    def add_item(self,x):
        self.items.append(x)


if __name__ == "__main__":

    bag1 = bag()
    bag2 = bag()

    bag1.add_item("water")
    print(bag2.items)

有关其他详细信息,请参阅文档。

以下代码应该可以解决问题:

class bag:

    def __init__(self):
        self.items = []

    def add_item(self, x):
        self.items.append(x)


if __name__ == "__main__":
    bag1 = bag()
    bag2 = bag()

    bag1.add_item("water")
    print(bag2.items)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM