تفاوت __call__ , __ new__

پرسیده شده
فعالیت 1229 روز پیش
دیده شده 1173 بار
0

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

ممنونم

فایل پیوست

Ahmad As
Ahmad As

26 آبان 99

1
حذف شده

متد __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/۵۸۲۶۲۸۳ 

 

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

26 آبان 99