basit örneği inceleyelim: LütfenPython bir sınıfın üyesi olan geri arama işlevini nasıl ayırt eder?
class A:
def __init__(self, flag):
self.flag = flag
def func(self):
print self.flag
a = A(1)
b = A(2)
callback_a = a.func
callback_b = b.func
callback_a()
callback_b()
sonucudur:
1
2
O beklendiği çalışır olarak. Ama bir sorum var. C'de geri arama işlevi bir işaretçi olarak iletilir. Python'da, bunu yapmak için benzer bir yolu olmalı, böylece arayan işlevin adresini bilir. Ama benim örneğimde, sadece fonksiyon göstergesine geçilmiyor, aynı zamanda parametre (self) parametresi de aynı sınıftan farklı sonuçlar basıyor. Sorularım:
Python'da böyle bir yöntemin yalnızca bir kopyası var mı? Benim anlamım, herhangi bir yöntemin kodunun yalnızca bir kopyası olmasıdır ve benim örneğimde yöntem klonlanmayacaktır. Sanırım sadece bir kopyası olmalı, ama burada daha fazla girdi elde etmek için hala bu soruyu yapıyorum.
Python'daki her şeyin bir nesne olduğunu hatırlıyorum. Yani benim örneğimde, farklı parametrelere sahip iki fonksiyon örneği var, ancak sadece bir kod kopyası var mı?
Bir kapanış oluşturmayı düşünür müsün? –
Yeni stil sınıfları kullanıyor olmalısınız. Alt nesneyi 'nesneden' ya da alt sınıftan gelen şeyleri alt sınıflara ayırın. – aaronasterling
@aaronasterling: Sorunun üzerinde çok fazla etkisi olduğundan emin değil miyim? – jdi