تفاوت داندر فانکشن های __call__ و __init__ در پایتون
چهارشنبه, ۱۰ مهر ۱۳۹۸، ۰۱:۰۴ ق.ظ
داندر فانکشن ها توابعی هستن که به هنگام overload کردن توابع خاص مثل arithmetic operator , initalization, toStr و ... به کار میروند. (__add__
, __mul__
, __str__
, __init__
, ... )
در اینجا تفاوت دو داندر فانکشن __call__ و __init__ را به شما نشان خواهیم داد:
کد زیر را در نظر بگیرید:
class test:
def __init__(self):
self.a = 10
def __call__(self):
b = 20
__init__ مواقعی که بخواهیم یک شی جدید بسازیم فراخوانی میشود.
class Foo:
def __init__(self, a, b, c):
# ...
x = Foo(1, 2, 3) # __init__
در حالیکه __call__ یک تابع فراخوانی را پیاده سازی میکند.
class Foo:
def __call__(self, a, b, c):
# ...
x = Foo()
x(1, 2, 3) # __call__
۹۸/۰۷/۱۰