簡體   English   中英

Python類數據成員作為另一個類的對象

[英]Python class data member as object of another class

我正在制作兩個不同的相關類(商店和商品)。 想法是關聯在商店實例中銷售的商品:

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是項目類對象,以便我可以調用項目類方法。

您看到的是列表,因為這是您傳入的內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM