💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Ahmad As
تفاوت __call__ , __ new__
محمدعلی رضا حل شده توسط محمدعلی رضا

ممنون میشم اگر تفاوت __call__ , __new__  را برام یه توضیحی بدین کی از call , چه زمانی از __new__ استفاده می‌کنیم؟
خیلی برام سواله که پشت قضیه چه اتفاقی می‌افتد

ممنونم

متد __new__ رو تو تاپیک:

تو کلاس متد __new__ در کلاس Singleton چه اتفاقی داره می‌افته؟

توضیح دادم. دیگه میدونی چیکار میکنه. (توضیح بیشتری نداره)

وقتی از __new__ استفاده میکنیم که میخواهیم تغییر تو ساخت ابجکت از کلاس بدیم مثل Singleton. کلا وقتی قبل ساخت ابجکت بخواهیم کاری انجام بدیم.

متد __call__ رو وقتی تعریف میکنیم داریم برای ابجکت هامون یه متد تعریف میکنیم که اگر ابجکتی رو صدا زدیم دستورات داخل متد __call__ اجرا میشن.

مثال

class Student:
    def __call__(self, string, *args, **kwargs):
        print(string)
s1 = Student()

حالا وقتی __call__ رو صدا میزنیم یا ابجکت رو صدا میزنیم فرقی نداره بهرحال متد __call__ اجرا میشه:

s1.__call__("my text")  # output: my text
s1("my text")  # output: my text

اینکه از __call__ کجا استفاده میکنیم هم یه مثال هایی تو تاپیک زیر آوردن:

https://stackoverflow.com/questions/۵۸۲۴۸۸۱/python-call-special-method-practical-example/۵۸۲۶۲۸۳ 

 

بهترین پاسخ
محمدعلی رضا ۲۶ آبان ۱۳۹۹، ۱۲:۳۵