SORU
28 NİSAN 2011, PERŞEMBE


Python ____ özel yöntem pratik örnek çağrı

Bir sınıfta __call__ yöntemi bir sınıf örneği çağrıldığında tetiklenir biliyorum. Ancak, hiçbir fikrim yok ne zaman kullanabilirim bu özel yöntem, çünkü kişi sadece yeni bir yöntem ve gerçekleştirmek aynı işlem yapılır __call__ yöntem ve yerine çağıran örneği diyebilirsin yöntemi.

Gerçekten, eğer birisi bana bu özel yöntem pratik kullanım verirse çok memnun olurum.

CEVAP
28 NİSAN 2011, PERŞEMBE


Bu örnek memoization, onları daha sonra onları yeniden yerine bakabilirsiniz yani bir tablodaki değerleri (bu durumda sözlük) depolama temel olarak kullanır.

Burada kullandığımız basit bir sınıf ile bir __call__ yöntem için hesaplanması faktöriyel (callable object) yerine bir faktöriyel fonksiyonu içeren bir statik değişken olarak bu mümkün değil Python).

class Factorial:
    def __init__(self):
        self.cache = {}
    def __call__(self, n):
        if n not in self.cache:
            if n == 0:
                self.cache[n] = 1
            else:
                self.cache[n] = n * self.__call__(n-1)
        return self.cache[n]

fact = Factorial()

Şimdi çağrılabilir olan fact bir nesne, tıpkı diğer işlevi gibi. Örneğin

for i in xrange(10):                                                             
    print("{}! = {}".format(i, fact(i)))

# output
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880

Veayrıca durum bilgisi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ipsy Makeup Tips

    ipsy Makeup

    19 ŞUBAT 2009
  • RocketJump

    RocketJump

    22 ŞUBAT 2006
  • technodromeband's channel

    technodromeb

    28 NİSAN 2011