• 1399/02/04

سوال در مورد ضرورت استفاده از name mangling :

با سلام.

استاد شما در ویدیو 70 وقتی خواستید برای یک کلاس child که از 2 کلاس والد ارث می برد initializer هر دو رو فراخوانی کنید، از name mangling استفاده کردید  name رو به name__ تغییر دادید. در صورتی که اگر name باقی بمونه مشکلی ایجاد نمیشه و در صورت فراخوانی name، هر دو کلاس والد فراخوانی میشن. ممنون می شم توضیح بدید که چرا این کار رو کردید.

  • 1399/02/05
  • ساعت 06:44

سلام دوست من

دارین اشتباه میکنین دوست عزیز

name هر دو فراخوانی نمیشه

این کد رو اجرا کنین :

class A(object):
    def __init__(self):
        self.name = "mohammad"


class B(object):
    def __init__(self):
        self.name = "milad"


class C(A, B):
    def show_name(self):
        print(self.name)


me = C()

me.show_name()

اگه دقت کنین در خروجی فقط کلمه ی mohammad چاپ میشه و milad نمایش داده نمیشه

پس عملا name کلاس اول رو برمیگردونه درحالی که کلاس C از هر دو ارث بری کرده


logo-enamadlogo-samandehi