Python类数据成员作为另一个类的对象

2024-09-29 21:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作两个不同的相关类(store和item)。想法是将商店实例中销售的商品关联起来:

class store:   
    def __init__(self, co_loc_i, co_loc_ref_i, lat, lon, items=None):
      self.lat = lat
      self.lon = lon
      self.co_loc_i = co_loc_i
      self.co_loc_ref_i = co_loc_ref_i
      self.items = items or []

    def addItem(self, item):
        self.items.append(item)

    def getItems(self):
        return self.items

class Item:
    def __init__(self, mdse_item_i, dept, clas, sbcl, mdse_item_ref_i):
      self.mdse_item_i = mdse_item_i
      self.dept = dept
      self.clas = clas
      self.sbcl = sbcl
      self.mdse_item_ref_i = mdse_item_ref_i

然后我对这些类进行对象实例化以使用:

i1 = Item(1,1,1,1,1)
i2 = Item(2,1,1,1,2)
i3 = Item(3,1,1,1,3)
s1= store(10, 10, 1.1, 1.1)
s2= store(20, 20, 1.2, 1.2)

在此之后,我将项与存储实例相关联(我在这里检查了i1i2i3Item类实例:

s1.addItem([i1,i2])
s2.addItem([i2,i3])

但是,在对存储区内的项进行迭代时,我在以下代码中得到类型为x的列表:

for x in s1.getItems():
    print(type(x))

<type 'list'> 如何确保这里的x是item class对象,以便调用item class方法。你知道吗


Tags: 实例storeselfrefdefitemsitemloc
1条回答
网友
1楼 · 发布于 2024-09-29 21:24:20

你看到的是一个列表,因为这就是你传递的内容:

s1.addItem([i1,i2])
s2.addItem([i2,i3])

如果要在存储中使用Item实例,请传递这些实例:

s1.addItem(i1)
s1.addItem(i2)
s2.addItem(i2)
s2.addItem(i3)

如果希望能够添加项目列表,可以定义另一个函数:

def addItems(self, items):
    self.items.extend(items)

关键的区别是extendappend。你知道吗

相关问题 更多 >

    热门问题