我有两个带有类实例清单列表的对象,我想在它们之间移动这些实例。但是,我不确定如何实际引用我没有明确命名的类实例。
在此示例中,类实例的多个副本可能位于清单中,我想先检查是否存在副本,然后将其添加到目标对象的清单中并将其从源对象中删除&#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)
答案 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)