I'm new to this site and was looking for a code review as this code 'works', but the method has a redundant print statement. The output is formatted correctly but perhaps the print statements are doing most of the work, rather than the code? Is it normal to have to change the method each time a new instance has to be accounted for? The "Total:" output wouldn't work correctly in this code if I simply added a new instance (without mirroring the change in the method). Example inputs given were 10 bottles of water at $1 each and 1 bag of chocolate chips for $3.

```
class ItemToPurchase:

    def __init__(self, item_name = 'none', item_price = 0, item_quantity = 0):
        self.item_name = item_name
        self.item_price = item_price
        self.item_quantity = item_quantity        

    def print_item_cost(self, item_name):
        print('{} {} @ ${} = ${}'.format(item_name, item_quantity, item_price, (item_price * item_quantity)))
        print('{} {} @ ${} = ${}'.format(item_name2, item_quantity2, item_price2, (item_price2 * item_quantity2)))

if __name__ == "__main__":

    # Type main section of code here
    item_one = ItemToPurchase()
    print('Item 1')
    item_name = input('Enter the item name:\n')
    item_price = int(input('Enter the item price:\n'))
    item_quantity = int(input('Enter the item quantity:\n'))

    item_two = ItemToPurchase(item_name, item_price, item_quantity)
    print()
    print('Item 2')
    item_name2 = input('Enter the item name:\n')
    item_price2 = int(input('Enter the item price:\n'))
    item_quantity2 = int(input('Enter the item quantity:\n'))

    print()
    print('TOTAL COST')
    item = ItemToPurchase()
    item.print_item_cost(item_name)
    print()
    print('Total: $' + str((item_price * item_quantity) + (item_price2 * item_quantity2)))

```