سلام
به این کد نگاه کنید :
class First():
    def __init__(self):
        print ("first")
class Second(First):
    def __init__(self):
        super().__init__()
        print ("second")
class Third(First):
    def __init__(self):
        super()
        print ("third")
class Fourth(Second ,Third):
    def __init__(self):
        super().__init__()
        print ("that's it")
Fourth()خروجیش به این صورته :
third
second
that's itاینجور که من متوجه شدم پایتون میگه وقتی که از چند کلاس ارث بری میکنیم super() به اولین کلاس اشاره میکنه و درصورتی که اون متد رو نداشت به کلاس بعدی الی آخر
حالا اینجا کلاس second متد init رو داره و خب به اون اشاره میکنه اما وقتی که به
super().__init__()کلاس second میرسه به جای اینکه بره سراغ کلاسی که second ازش ارث بری کرده یعنی First میره سراغ init کلاس دومی که کلاس Fourth ارث بری کرده یعنی third و اون رو اجرا میکنه
و حالا اگر به super() کلاس Third هم .__init__() رو اضافه کنیم یعنی :
class First():
    def __init__(self):
        print ("first")
class Second(First):
    def __init__(self):
        super().__init__()
        print ("second")
class Third(First):
    def __init__(self):
        super().__init__()
        print ("third")
class Fourth(Second ,Third):
    def __init__(self):
        super().__init__()
        print ("that's it")
Fourth()
خروجی میشه :
first  
third  
second  
that's itمیبینیم که بعد از اینکه init کلاس third رو اجرا کرده و اون هم init کلاس super رو صدا زده نگاه میکنه میبینه که ما کلاس سومی در Fourth ارث بری نکردیم و میاد به کلاس third نگاه میکنه که از چه کلاسی ارث بری کرده که اینجا first باشه و init اون رو اجرا میکنه
خلاصه سوالم اینه برداشت من درسته یا دارم چرت میگم 😂
در پایتون به این شکل هست که اگر مایل هستید متد سازنده کلاس پدر اجرا بشه باید از
super().__init__(...)استفاده بشه حتما
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟