Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
hanpari
Tvůrce
Avatar
hanpari:22.6.2014 8:08

Ahoj,
narazil jsem na pojem líné počítání, a i když je to asi něco jiného, než ideální přístup k hodinám matematiky, zaujalo mne to a udělal jsem si jednoduchou třídu, abych ho demonstroval.

Otázka je, jestli jsem ten koncept pochopil správně, nebo zda mi něco něco podstatného neuniklo?

Třída Lazy má property count, která vrací součet seznamu _numbers. Výsledek přepočítává jen tehdy, kdy dojde k přidání čísla do seznamu, jinak vrací poslední vypočítaný výsledek.

class Lazy():
    _numbers = []
    _count = None
    def add(self, number):
        self._numbers.append(number)
        self._count = None

    @property
    def count(self):
        if self._count == None:
            print("Přepočítává se...")
            self._count = sum(self._numbers)
        return self._count


l = Lazy()
print(l.count) #Výsledek 0, přepočítaný
>>> Přepočítává se...
>>> 0
l.add(10)
l.add(5)
print(l.count) #Výsledek 15, přepočítaný
>>> Přepočítává se...
>>> 15
print(l.count) #Výsledek 15, nepřepočítaný
>>> 15
Editováno 22.6.2014 8:12
 
Odpovědět
22.6.2014 8:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.