我正在制作两个不同的相关类(商店和商品)。想法是关联在商店实例中销售的商品:
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)
在此之后,我将商品与商店实例相关联(我在此处检查了i1
,i2
,i3
是Item
类实例:
s1.addItem([i1,i2])
s2.addItem([i2,i3])
但是,当迭代商店内的商品时,我会在下面的代码中获得x
类型作为列表:
for x in s1.getItems():
print(type(x))
<type 'list'>
如何确保x
这里是项类对象,以便我可以调用项类方法。
答案 0 :(得分:1)
您正在查看列表,因为这是您传入的内容:
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)
关键区别是extend
vs append
。