textarea is empty

‎وراثت در پايتون ـPython Inheritance

Previous >    <Next  

‎وراثت اجازه ميدهد كه كلاسي را بتوان تعريف كرد كه بتواند تمام ويژگي و متد هاي كلاس ديگري را ‎بارث ببرد.

‎كلاس والد‎(Parent Class)‎ كلاسي است كه ازآن ارث بري ميشود .به آن كلاس پايه ‎(Base Class)‎هم ميگويند .

‎كلاس فرزند‎(Child Class)‎ كلاسي است كه از كلاس ديگر ارث بري ميكند .باين ‎كلاس، كلاس مشق شده‎(derived class)‎ نيز گفته ميشود.

‎ايجاد يك كلاس والد ـCreate a Parent Class

‎هر كلاسي ميتواند كلاس والد باشد، بنابراين فرمت آن مانند ايجاد ديگر كلاس هاست.

‎مثال ـ ايچاد كلاس‎Person‎ با ويژگي هاي ‎firstname, lastname‎ ‎ومتد‎printname

--(go to editor for change code and run)

‎ايجاد كلاس اولاد ـCreate a Child Class

‎براي ايجاد كلاسي كه عملكرد را از كلاس ديگري بارث ميبرد، بايد در ايجادآن، كلاس والد بعنوان ‎پارامتر استفاده شود.

‎مثال ـ ايجاد كلاس با نام‎student‎كه ويژگي ها ومتدهاي كلاس ‎Person‎ ‎را بارث مي برد.

class Student(Person):
  pass

‎نكته ـ وقتي نمي خواهيد هيچ ويژگي يا متدي ديگري به كلاس اضافه كنيد، از كلمه كليديpass ‎استفاده كنيد.

‎اكنون كلاس‎Student‎ همان ويژگي ها ومتد هاي كلاس‎Person‎ را ‎دارد.

‎مثال ـ استفاده از كلاس‎Student‎ براي ايجاد يك شئ واجراي متد printname

x = Student("Mike", "Olsen")
x.printname()

--(go to editor for change code and run)

‎افزودن تابع‎__init__()‎‎

‎تااينحا يك كلاس فرزند ايجاد شده است كه ويژگي و متدهايش را از والد خود به ارث مي برد. ‎مي خواهيم بجاي دستور‎pass‎ تابع‎__init__( )‎ را اضافه نمائيم .

‎نكته ـ تابع‎__init__( )‎ هر زماني كه شئ جديدي ايجاد شود، بصورت خودكار فراخوان ‎ميشود.

‎مثال ـ اضافه نمودن تابع‎__init__( )‎به كلاس اولاد ‎student

class Student(Person):
  def __init__(self, fname, lname):
    #add properties etc.

--(go to editor for change code and run)

‎هنگاميكه تابع‎__init__()‎‎ به كلاس فرزند اضافه ميشود، ديگر آن اين تابع را از ‎والد به ارث نمي برد .يا بعبارتي ارث بري تابع مذكور از والد لغو ميشود.

‎براي حفظ ارث بري تابع‎__init__()‎‎ از والد ، بايديك فراخواني به تابع والد ‎اضافه شود.

‎مثال ـ تكميلي كلاس اولاد با توجه توضيحات

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

--(go to editor for change code and run)

‎اكنون با موفقيت تابع‎__init__()‎‎ به اولاد اضافه شده و ارث بري آن هم از والد ‎حفظ شده است .ميخواهيم قابليت هاي ديگري به اين تابع اضافه كنيم.

‎استفاده از تابع‎super()‎

‎پايتون همجنين يك تابع‎super()‎‎ دارد كه باعث ميشود كلاس فرزند تمام متد و ويژگي ‎هاي والد را به ارث ببرد.

‎مثال ـ استفاده از تابع‎super()‎

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

--(go to editor for change code and run)

‎با استفاده از تابع‎super()‎‎ لازم نيست از نام عنصر والد استفاده كنيد، عنصر به ‎طور خود كار متدها و ويژگي هاي را از والد خود به ارث مي برد.

‎افزودن ويژگي ـAdd Properties

‎مثال ـ اضافه نمودن ويژگي‎graduationyear‎ در كلاس ‎student

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

--(go to editor for change code and run)

‎مثال ـ در حالت كلي تر مثال بالا سال را متغير در نظر ميگيريم ومثال بالا بصورت زير اصلاح ‎ميگردد

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)

--(go to editor for change code and run)

‎افزودن متد ـAdd Methods

‎مثال ـ افزودن متد‎welcome‎ به كلاس ‎student

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

--(go to editor for change code and run)

‎اگر در كلاس اولاد متدي را اضافه كنيد، كه در والد هم باشد، ارث براي از اين متد لغو ميگردد. ‎در اين حالت متد اولاد فقط فعال است.


Previous >    <Next