2013-03-30 29 views
25

Sınıfım için Python'da küfür etmeyi öğrenmeye çalışıyorum ve bunun için() operatörünü aşırı yüklemeliyim. Ancak,() operatörünü aşırı yüklemeye nasıl gidebilirim anlamıyorum. Parantezleri aşırı yükledikten sonra mantığı açıklayabilir misiniz? Önce aşırı yüklenmeli miyim (veya sonra) veya bunlardan herhangi birini yapabilir miyim? Ayrıca, parantez operatörü için özel bir isim var mı?Python'da aşırı yük() operatörü

için __call__ yöntemi uygulayarak bir amacı çağrılabilir yapabilir
+3

[çağrılabilir nesneleri öykünen] (http://docs.python.org/2/reference/datamodel.html#emulating-callable- nesneler) – soon

cevap

30

:

class FunctionLike(object): 
    def __call__(self, a): 
     print "I got called with %r!" % (a,) 

fn = FunctionLike() 
fn(10) 

# --> I got called with 10! 
+1

Ek olarak, bu callable nesneyle temel işlemleri yapabilir miyim? – jdyg

+1

Neredeyse tüm dil işlemlerini sağlayabilirsiniz: http://docs.python.org/2/reference/datamodel.html#special-method-names –

+0

'()' söz konusu nesneyi esas olarak çağıran bir çağrı işlecidir Belli bir argüman (ya da yokluğu)? – MadPhysicist

İlgili konular