Diskuze: Lazy computing

Python Python Lazy computing

Avatar
hanpari
Redaktor
Avatar
hanpari:

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.