counterexample

فعلن فقط برنامه نویسی

counterexample

فعلن فقط برنامه نویسی

چهارشنبه, ۱۰ مهر ۱۳۹۸، ۰۱:۰۴ ق.ظ

۰

تفاوت داندر فانکشن های __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__
موافقین ۰ مخالفین ۰ ۹۸/۰۷/۱۰
counter example

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">