如何引用列表中的类实例?

时间:2018-02-13 22:33:16

标签: python python-3.x

我有两个带有类实例清单列表的对象,我想在它们之间移动这些实例。但是,我不确定如何实际引用我没有明确命名的类实例。

在此示例中,类实例的多个副本可能位于清单中,我想先检查是否存在副本,然后将其添加到目标对象的清单中并将其从源对象中删除&#39 ;库存。

我如何直接引用Thing,还是完全有更好的解决方案?

class Foo():

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

    def move_item(self, item, destination):
        if item in self.inventory:
            destination.add_item(item)
            self.inventory.remove(item)

    def add_item(self, item):
        self.inventory.append(item)


class Bar():

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

    def add_item(self, item):
        self.inventory.append(item)


class Thing():
    def __init__(self):
        self.name = "Thing"


foo = Foo()
bar = Bar()
foo.add_item(Thing())
foo.move_item(Thing, bar)

1 个答案:

答案 0 :(得分:0)

保存引用,或者为其他类提供返回引用的方法

例如,通过保存参考:

thing = Thing()
foo.add_item(thing)
foo.move_item(thing, bar)

获得参考的示例:

foo.add_item(thing)
foo.move_item(foo.inventory[0], bar)

或者,如果您修改add_item以返回已添加的项目:

class Foo():
    ...
    def add_item(self, item):
        self.inventory.append(item)
        return item
    ...

thing = foo.add_item(Thing())
foo.move_item(thing, bar)