Silvia
Silvia

Reputation: 25

python error won't return what desired result

This is my code so far:

class Compound(Item):

    def __init__(self, itemID, name, products, itemlist):
        Item.__init__(self,itemID,name)
        self._products = products
        self._items_list = itemlist


    def get_cost(self):
        return self._cost

    def get_items_list(self):
        return self._items_list

    def get_items_str(self):
        return "".format(self._itemID, self._name)

    def set_items(self, itemlist):
        self._itemlist= itemlist

    def get_depend(self):
        allitems = []
        for a in self._set_items:
            allitems.append(n[0])
            return allitems

    def __repr__(self):
        return "{0}, {1}, {2}".format(self._itemID, self._name, self._products, self._items_list)

    def __str__(self):
        return '{0}     {1}                            {2}'.format(self._itemID, self._name, self._products, self._item_list)

class Products():
   def __init__(self):
        self._products = {}

   def get_item(self, itemID):
        return self._products.get(itemID)

    def add_item(self, itemID, product):
        self._products[itemID] = product

    def remove_item(self, itemID, product):
        if item in products:
            self._products.remove(item)
            return True
        return False

    def delete_all(self):
        self._products.clear()

    def get_keys(self):
        return self._products.keys()

    def check_depend(self, item):
        for i in self._products:
            depend = self._products(i).get_depend()
            if item in depend:
                return True
            return False

When I run the following code:

products.add_item('CWH111', Compound('CWH111', 'Mountain Bike Built Wheel', products, [('TR202', 1), ('TU227', 1), ('WH239', 1)]))
products.get_item('CWH111')

I want to get

CWH111, Mountain Bike Built Wheel, TR202:1,TU227:1,WH239:1

but instead, all i get is

CWH111, Mountain Bike Built Wheel, <____main____.Products instance at 0x0000000002727588>

I have tried a lot of different things; can some one please tell me what I am doing wrong?

Upvotes: 0

Views: 87

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1125408

You are not using specifying a string formatter the self._items_list argument here:

return "{0}, {1}, {2}".format(self._itemID, self._name, self._products, self._items_list)

You only have 3 slots there ({0}, {1} and {2}), but you pass in 4 arguments. The following would already be better:

return "{0}, {1}, {2}".format(self._itemID, self._name, self._items_list)

even though that would not print exactly what you wanted.

You want to format self._items_list a bit more:

il = ','.join(['{0}:{1}'.format(*item) for item in self._items_list])
return "{0}, {1}, {2}".format(self._itemID, self._name, il)

Upvotes: 2

Related Questions