initve
call__` yöntemleri arasındaki farkı bilmek istiyorum.
Örneğin:
class test:
def __init__(self):
self.a = 10
def __call__(self):
b = 20
İlki yeni oluşturulan nesneyi başlatmak için kullanılır ve bunu yapmak için kullanılan argümanları alır:
class Foo:
def __init__(self, a, b, c):
# ...
x = Foo(1, 2, 3) # __init__
İkincisi fonksiyon çağrı operatörünü uygular.
class Foo:
def __call__(self, a, b, c):
# ...
x = Foo()
x(1, 2, 3) # __call__
Meta-sınıfta özel bir __call__()
yöntemi tanımlamak, sınıf örneğinin her zaman örneğin kendisini değiştirmeden bir işlev olarak çağrılmasına olanak tanır.
In [1]: class A:
...: def __init__(self):
...: print "init"
...:
...: def __call__(self):
...: print "call"
...:
...:
In [2]: a = A()
init
In [3]: a()
call