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
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.
Geçerli Python kodu bir yöntem gelen ç...
Yöntem Python çağrı uyumsuz?...
Python alt yöntem içeren bir dize var ...
İçinde döngüler JavaScript kapatma – b...
Modern Python özel istisnalar bildirme...