پایتون

جلسه ۵۸: Polymorphism به کمک نوشتار Duck در پایتون

در این درس شما Polymorphism را به کمک نوشتار duck پیاده‌سازی خواهید کرد. نوشتار duck یکی از پرکاربردترین مفاهیم موجود در برنامه نویسی شی‌گرا زبان پایتون است. به استفاده از این مفهوم میتوانیم Polymorphism را بدون وراثت پیاده‌سازی کنیم. اسم آن ممکن است برای شما جالب به نظر بیاید و در انتهای این درس آن را یاد خواهید گرفت.

نوشتار Duck چیست؟

میگوییم اگر شی‌ای مانند اردک(Duck) شنا کند، مانند اردک غذا بخورد یا به طور خلاصه مانند اردک رفتار کند، آن شی یک اردک است.

نوشتار پویا

نوشتار Duck در پایتون، بر اساس مفاهیم نوشتار پویا بدست آمده است. (نوشتار پویا به این معناست که میتوانیم، نوع یک شی را بعدا در کدها تغییر دهیم) با توجه به ماهیت پویای پایتون، نوشتار Duck این امکان را به کاربر میدهد تا از هر شی‌ای که رفتار مورد نظر را فراهم کند، بدون محدودیت اینکه باید زیر کلاس باشد استفاده کنیم. کد زیر را برای اینکه نوشتار پویا را بیشتر یادبگیرید بررسی کنید:

x = 5  # type of x is an integer
print(type(x))

x = "Educative"  # type of x is now string
print(type(x))

پیاده سازی نوشتاز Duck

مثالی را برای پیاده‌سازی این مورد ببینید:

class Dog:
    def Speak(self):
        print("Woof woof")


class Cat:
    def Speak(self):
        print("Meow meow")


class AnimalSound:
    def Sound(self, animal):
        animal.Speak()


sound = AnimalSound()
dog = Dog()
cat = Cat()

sound.Sound(dog)
sound.Sound(cat)

توضبحات

  • در خط ۱۳ نوع animal  در بخش تعریف متد Sound مشخص نشده است.
  • نوع Animal زمانی مشخص میشود که، متد فراخوانی شود. بنابراین مهم نیست که کدام نوع شی را شما به عنوان پارامتر متد Sound میدهید. جیزی که مهم است متد sound میتواند در همه کلاس هایی که به عنوان ورودی به آن داده میشود تعریف بشود.
  • میتوانیم هر خصوصیت یا متدی از animal که در کلاس AnimalSound داشته باشد را استفاده کنیم.

نتیجه‌گیری

حال به این موضوع برمیگردیم که چرا میگوییم نوشتار Duck. اگر یک پرنده مانند یک اردک صحبت کند، مانند یک اردک شنا کند و مانند یک اردک غذا بخورد. آن پرنده اردک است. متشابها در مثال بالا، برای شی animal اهمیتی ندارد که تعریف متد sound چه باشد، به شرطی که رفتار مرتبط داشته باشد. از منظر عموم مردم از آنجایی که سگ و گربه، میتوانند مانند حیوانات صحبت کنند، هر دو حیوان هستند. اینگونه است که ما به polymorphism بدون وراثت دست‌پیدا کردیم. در درس بعدی، موضوع بحث ما استفاده از کلاس‌های پایه انتزاعی در پایتون است.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا