Как я могу перебрать массив объектов в Python - PullRequest
0 голосов
/ 26 апреля 2018

Я пишу простую программу Checkout на python Мой класс оформления заказа

 Class Checkoutregister


 product1 = Product(510, 'milk', 6)
 product2 = Product(511, 'coke', 3)
 product3 = Product(512, 'chicken', 10)
 product4 = Product(513, 'shirt', 40)
 product5 = Product(514, 'kitkat', 4)
 list=[]

Это мой класс продукции

class Product:
def __init__(self,barcode,name,price):
    self.barcode=barcode
    self.name=name
    self.price=price

Я пишу функцию для вставки продуктов в список и печати списка ... но у меня возникают проблемы при печати списка

 def insertProduct():
        Checkoutregister.list.insert(0,Checkoutregister.product1)
        print Checkoutregister.list

Оператор печати печатается как

[<Product.Product instance at 0x04AEB6C0>]

как мне распечатать список и как итерировать по списку, чтобы распечатать все вставленные продукты в списке, когда я добавляю все продукты в списке

1 Ответ

0 голосов
/ 26 апреля 2018

Вам необходимо добавить метод _str_ к классу вашего продукта

Попробуйте:

class Product:
  def __init__(self,barcode,name,price):
    self.barcode=barcode
    self.name=name
    self.price=price
  def __str__(self):
        return "ProdName: "+self.name+" Barcode: "+str(self.barcode)+" Price: $"+str(self.price)

product1 = Product(510, 'milk', 6)

print(product1)

При этом будут напечатаны Product объекты типа:

ProdName: milk Barcode: 510 Price: $6

Если вы хотите иметь list[] из Product объектов, которые затем хотите перебрать и распечатать каждый из них, это будет выглядеть следующим образом:

# create our products
product1 = Product(510, 'milk', 6)
product2 = Product(420, 'hotdog buns', 3)
# create a list to hold our products
list_of_prods = []
# add our products to the list[]
list_of_prods.append(product1)
list_of_prods.append(product2)
# iterate over our list[] with a simple for:each loop
for prod in list_of_prods:
  print(prod)

Это напечатало бы все Product в list_of_prods[]. Вывод выглядит так:

ProdName: milk Barcode: 510 Price: $6
ProdName: hotdog buns Barcode: 420 Price: $3

Исходя из вашего первоначального вопроса, похоже, что вы пытались достичь этого путем создания класса Checkoutregister - идея была бы такой же, и вашему методу insertProduct() просто нужно было бы добавить продукты в Checkoutregister.list .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...