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

  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • MarinaHD2001

    MarinaHD2001

    7 ŞUBAT 2009
  • Tom Megalis

    Tom Megalis

    18 NİSAN 2006