iteracja listy obiektów

0

Hej, uczę się pythona dopiero drugi dzień (wcześniej miałam styczność z javą, więc może zbyt próbuję jakoś to odwzorować) potrzebna mi metoda show_offer, która będzie przechodzić przez listę resources_company i wyświetlać jej poszczególne składowe, do tej pory wszystkie moje pomysły kończą się błędami, nie do końca rozumiem działanie magicznych metod, ale mam nadzieję że nie będą tu potrzebne. Będę bardzo wdzięczna jeśli ktoś poprawi tą metodę oraz za wszystkie inne instrukcje dotyczące kodu, bo może źle czegoś używam i niby działa ale tak się nie robi :)

class Company():
    def __init__(self, name_company = ""):
        self.name_company = name_company
        self.resources_company = []
        
    def make(self, name_resource = "", cost = 0.0, amount = 0):
        resources = Resources(name_resource, cost, amount)
        self.resources_company.append(resources)
    
    def show_offer(self):
        for i, resource_company in enumerate(self.resources_company):
            print("Name resource: %s, cost: %f, amount: %d" %(resource_company[i].name_resource, resource_company[i].cost, resource_company[i].amount))
            
        
class Resources():
    def __init__(self, name_resource = "", cost = 0.0, amount = 0):
        self.name_resource = name_resource
        self.cost = cost
        self.amount = amount
        
company = Company("Cropp")
company.make("t-shirt", 40.0, 5)
company.make("sockets", 7.0, 20)
company.show_offer()
0
for i, resource_company in enumerate(self.resources_company):

Ta linijka to pętla foreach (z dodanym iteratorem). To oznacza, że wewnątrz masz już dostęp do obecnie przetwarzanego elementu listy, więc nie musisz używać indeksu. Wyrzuć indeksowanie [i] z odwołań do resource_company i powinno zadziałać.

Ogólnie w tej chwili nie wygląda, jakby był Ci potrzebny indeks, więc równie dobrze możesz zapisać tę pętlę tak:

for resource_company in self.resources_company:
    print("Name resource: %s, cost: %f, amount: %d" %(resource_company.name_resource, resource_company.cost, resource_company.amount))
0

No tak :) jeden przykład lepszy niż tysiąc słów, dzięki wielkie ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1