Cześć.
chciałem coś zrobić chytrze po pythonowemu i kod poniżej działa, ale...
next
zwraca mi referencję na element listy kont, który jest typu Object
, czyli gdy po next(costam). <- to po kropce nie rozwija mi w pyCharm'ie dostępnych dla mojej klasy pól i metod. Można z tym żyć, ale zapewne można to życie uczynić łatwiejszym.
def wplacNaKonto(self, nr: str, kwota: Decimal):
next(k for k in self.getKonta() if k.nr == nr).wplac(kwota)
Jak zrobię coś takiego:
next(Konto(k) for k in self.getKonta() if k.nr == nr).wplac(kwota)
lub
zk = next(k for k in self.getKonta() if k.nr == nr)
if zk:
zk.wplac(kwota)
to moje znalezione konto jest kopią oryginalnego obiektu i wpłacam do kopii, a w oryginale saldo pozostaje bez zmian. Dodatkowo, w drugim przypadku rzuca Exception od razu w pierwszej linii, jeśli nr
nie odpowiada żadnemu numerowi konta na liście zanim sprawdzę warunek instrukcją if
.
Intuicja podpowiada mi, że początkowy kod jest poprawny, tylko trzeba jakoś ładnie rzutować typ, ale trochę wymiękłem jak to elegancko zrobić. Może ktoś z bardziej doświadczonych python'owców podpowie?