ممنون میشم اگر تفاوت __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/۵۸۲۶۲۸۳