پائیٹون وارثیت

پائیٹون وارثیت

وراثت کا استعمال، دوسرے کلاس کی تمام میتودوں اور پرزوائزوں کو ورتنا دینا ہوتا ہے۔

پیرن کلاسوراثت لیتی ہوئی کلاس کو بھی بنیادی کلاس کہا جاتا ہے。

ذیلی کلاسایک کلاس جو دوسرے کلاس سے وراثت لیتی ہوئی ہوتی ہے، اس کو بھی ذیلی کلاس کہا جاتا ہے。

پیرن کلاس بنائیں

کسی بھی کلاس کو پیرن کلاس بنایا جاسکتا ہے، لہذا اس کا زبان بند بھی کسی دیگر کلاس کی بنیاد پر بنایا جاسکتا ہے:

مثال

ایک نام 'Person' والا کلاس بنائیں جس میں 'firstname' اور 'lastname' پرزوائز اور 'printname' میتود شامل ہیں:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
# با استفاده از Person یک شیء ایجاد کنید و سپس روش printname را اجرا کنید:
x = Person("Bill", "Gates")
x.printname()

مثال چلانا

فرزند ایجاد کنید

برای ایجاد یک کلاس که ویژگی‌های دیگر را ارث می‌برد، در هنگام ایجاد فرزند، کلاس والد را به عنوان پارامتر ارسال کنید:

مثال

یک کلاس به نام Student ایجاد کنید که ویژگی‌ها و روشهای کلاس Person را ارث می‌برد:

کلاس طالب علم(شخص):
  گذر

توضیحات:اگر نمی‌خواهید ویژگی یا روش دیگری به این کلاس اضافه کنید، از گذر کلمه کلیدی.

حالا، کلاس Student ویژگی‌ها و روشهای مشابه کلاس Person را دارد.

مثال

یک شیء از کلاس Student ایجاد کنید و سپس روش printname را اجرا کنید:

x = Student("Elon", "Musk")
x.printname()

مثال چلانا

فونکشن __init__() را اضافه کنید

تا به حال، ما یک فرزند ایجاد کرده‌ایم که ویژگی‌ها و روشهای والد را ارث می‌برد.

ما می‌خواهیم که __init__() فونکشن را به فرزند اضافه کنید (در عوض گذر کلمه کلیدی).

توضیحات:هر بار که از کلاس برای ایجاد یک شیء جدید استفاده می‌شود، فونکشن __init__() به طور خودکار فراخوانی می‌شود.

مثال

فونکشن __init__() را به کلاس Student اضافه کنید:

کلاس طالب علم(شخص):
  def __init__(self, fname, lname):
    # ویژگی‌ها و غیره اضافه کنید

وقتی شما فونکشن __init__() را اضافه می‌کنید، فرزند دیگر ارث فونکشن __init__() والد را نمی‌برد.

توضیحات:فونکشن __init__() فرزند، ارث فونکشن __init__() والد را پوشش می‌دهد.

برای حفظ ارث فونکشن __init__() والد، لطفاً فراخوانی فونکشن __init__() والد را اضافه کنید:

مثال

کلاس طالب علم(شخص):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

مثال چلانا

حالا، ما موفق به اضافه کردن فونکشن __init__() شده‌ایم و ارث پدر کلاس را حفظ کرده‌ایم، ما آماده اضافه کردن ویژگی‌ها به فونکشن __init__() هستیم.

با استفاده از فونکشن super()

پایاوتن نیز super() فونکشن، که باعث می‌شود فرزند از والد تمام روشها و ویژگی‌ها را ارث ببرد:

مثال

کلاس طالب علم(شخص):
  def __init__(self, fname, lname):
    سوپر().__آغاز__(fname, lname)

مثال چلانا

با استفاده از super() فونکشن، شما نیازی به استفاده از نام عنصر والد ندارید، آن خواهد خودکار از عنصر والد روشها و ویژگی‌ها را ارث می‌برد.

ویژگی اضافه کنید

مثال

نام graduationyear کمپانی Student کلاس:

کلاس طالب علم(شخص):
  def __init__(self, fname, lname):
    سوپر().__آغاز__(fname, lname)
    self.graduationyear = 2019

مثال چلانا

在这例子中,2019 年应该是一个变量,并在创建 student 对象时传递到 Student 类。为此,请在 __init__() 函数中添加另一个参数:

مثال

添加 سال 参数,并在创建对象时传递正确的年份:

کلاس طالب علم(شخص):
  ڈیف __آغاز__(fname, lname, سال):
    سوپر().__آغاز__(fname, lname)
    سب. سال = سال
x = طالب علم("ایلون", "موسک", 2019)

مثال چلانا

فنکشن جوڑنا

مثال

نام ویلکام طالب علم کلاس میں کسی فنکشن کا نام بنایا تو:

کلاس طالب علم(شخص):
  ڈیف __آغاز__(fname, lname, سال):
    سوپر().__آغاز__(fname, lname)
    سب. سال = سال
  ڈیف ویلکام(سب خود):
    پرنٹ("کریا آپ کی خیر مقدم کی جارہی ہے", خود کا نام، خاندان کا نام، "کلاس میں", خود کا سال)

مثال چلانا

نکات:اگر آپ نے ذیلی کلاس میں ایک پیدائی کلاس میں کسی فنکشن کا نام بنایا تو وہ فنکشن پیدائی کلاس کا فنکشن اووررائئز کرے گا。