Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
hanpari
Redaktor
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.