وراثت چندگانه در برنامه نویسی پایتون

4 سال پیش

وراثت چندگانه در برنامه نویسی پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، با وراثت چندگانه در برنامه نویسی پایتون و نحوه استفاده از آن در برنامه خود آشنا خواهید شد. همچنین در مورد وراثت چند سطح و ترتیب وضوح متد یاد خواهید گرفت.

پیشنهاد ویژه : پکیج آموزش پایتون

 

وراثت چندگانه در برنامه نویسی پایتون

مشابه C ++، در پایتون یک کلاس می تواند از بیش از یک کلاس پایه  مشتق شود، . به این حالت وراثت چندگانه گفته می شود.

در وراثت چندگانه ، ویژگی های همه کلاس های پایه در کلاس مشتق شده به ارث می رسد. نحو وراثت چندگانه مشابه وراثت منفرد است.

مثال

class Base1:
    pass

class Base2:
    pass

class MultiDerived(Base1, Base2):
    pass

 

در اینجا، کلاس List Derived از کلاس های Base1 و Base 2 مشتق شده است.

کلاس MultiDerived از هر دو کلاس Base1 و Base2 ارث می برد.

وراثت چند سطحی پایتون

همچنین می توانیم از یک کلاس مشتق شده ارث ببریم. به این حالت وراثت چند سطحی گفته می شود.

در وراثت چند سطحی، ویژگی های کلاس پایه و کلاس مشتق شده در کلاس مشتق شده جدید به ارث می رسند.

مثال

class Base:
    pass

class Derived1(Base):
    pass

class Derived2(Derived1):
    pass

 

در اینجا کلاس Derived1 از کلاس Base و کلاس Derived2 از کلاس Derived1 مشتق شده است.

ترتیب وضوح متد در پایتون

هر کلاس در پایتون از کلاس object گرفته شده است. پایه ترین نوع در پایتون است.

بنابراین از نظر فنی، تمام کلاسهای دیگر توکار یا تعریف شده توسط کاربر، کلاسهای مشتق شده هستند و همه اشیا نمونه هایی از کلاس شی هستند.

# Output: True
print(issubclass(list,object))

# Output: True
print(isinstance(5.5,object))

# Output: True
print(isinstance("Hello",object))

 

در سناریوی وراثت چندگانه، هر ویژگی مشخص شده ابتدا در کلاس فعلی جستجو می شود. اگر پیدا نشود، جستجو در کلاسهای والد به صورت عمق اول، چپ و راست بدون جستجوی دو کلاس مشابه ادامه می یابد.

بنابراین، در مثال فوق از کلاس MultiDerived، ترتیب جستجو [MultiDerived، Base1، Base2، object] است. به این ترتیب Linearization از کلاس MultiDerived و مجموعه قوانینی که برای یافتن این ترتیب استفاده می شود (Method Resolution Order (MRO گفته می شود.

MRO باید از ترتیب تقدم محلی جلوگیری کند و همچنین یکنواختی را فراهم کند. این تضمین می کند که یک کلاس همیشه پیش از کلاس والدین خود ظاهر می شود. در مورد وجو والد های متعدد، ترتیب مشابه تاپل کلاس مبنا است

MRO یک کلاس را می توان به عنوان خصیصه __mro__ یا روش ()mro  مشاهده کرد. اولی یک تاپل را برمی گرداند در حالی که دومی یک لیست را برمی گرداند.

>>> MultiDerived.__mro__
(<class '__main__.MultiDerived'>,
 <class '__main__.Base1'>,
 <class '__main__.Base2'>,
 <class 'object'>)

>>> MultiDerived.mro()
[<class '__main__.MultiDerived'>,
 <class '__main__.Base1'>,
 <class '__main__.Base2'>,
 <class 'object'>]

 

در اینجا یک مثال پیچیده تر از وراثت چندگانه و تجسم آن همراه با MRO وجود دارد

 

# Demonstration of MRO

class X:
    pass


class Y:
    pass


class Z:
    pass


class A(X, Y):
    pass


class B(Y, Z):
    pass


class M(B, A, Z):
    pass

# Output:
# [<class '__main__.M'>, <class '__main__.B'>,
#  <class '__main__.A'>, <class '__main__.X'>,
#  <class '__main__.Y'>, <class '__main__.Z'>,
#  <class 'object'>]

print(M.mro())

 

خروجی

[<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <class 'object'>]

 

منبع.

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
  16. آرگومان تابع در برنامه نویسی پایتون
  17. تابع بازگشتی در برنامه نویسی پایتون
  18. تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
  19. متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
  20. کلیدواژه global در برنامه نویسی پایتون
  21. ماژول های برنامه نویسی پایتون
  22. پکیج ها در برنامه نویسی پایتون
  23. اعداد و تبدیل نوع داده در برنامه نویسی پایتون 
  24. لیست در برنامه نویسی پایتون
  25. تاپل در برنامه نویسی پایتون 
  26. رشته ها در برنامه نویسی پایتون
  27. مجموعه ها در برنامه نویسی پایتون
  28. دیکشنری در برنامه نویسی پایتون
  29. عملیات ورودی/خروجی در برنامه نویسی پایتون 
  30. دایرکتوری و مدیریت فایل ها در برنامه نویسی پایتون
  31. خطاها و استثناهای توکار در برنامه نویسی پایتون
  32. مدیریت استثناها در برنامه نویسی پایتون
  33. استثناهای تعریف شده توسط کاربر در برنامه نویسی پایتون
  34. برنامه ‌نویسی شی گرا در پایتون
  35. اشیا و کلاس ها در برنامه نویسی پایتون
  36. وراثت در برنامه نویسی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه