فهرست سرفصل‌های Python
خانه (Home) مقدمه (Introduction) شروع به کار (Getting Started) سینتکس (Syntax) کامنت ها (Comments) متغیرها (Variables) متغیرها - نام گذاری (Variables Names) متغیرها - اختصاص چندین مقدار (Assign Multiple Values) متغیرها - خروجی (Output Variables) متغیرها - سراسری (Global Variables) انواع داده ها (Data Types) اعداد (Numbers) تبدیل (Casting) رشته ها (Strings) رشته ها - برش (Slicing Strings) رشته ها - اصلاح (Modify Strings) رشته ها - چسباندن (String Concatenation) رشته ها - قالب بندی (Format - Strings) رشته ها - کاراکتر فرار (Escape Characters) رشته ها - متدها (String Methods) بولین ها (Booleans) عملگرها (Operators) لیست ها (Lists) لیست ها - دسترسی به آیتم (Access List Items) لیست ها - تغییر آیتم (Change List Items) لیست ها - اضافه کردن آیتم (Add List Items) لیست ها - حذف کردن آیتم (Remove List Items) لیست ها - حلقه (Loop Lists) لیست ها - فهرست سازی فشرده (List Comprehension) لیست ها - مرتب سازی (Sort Lists) لیست ها - کپی (Copy Lists) لیست ها - چسباندن (Join Lists) لیست ها - متدها (List Methods) تاپل ها (Tuples) تاپل ها - دسترسی به آیتم ها (Access Tuple Items) تاپل ها - به روز رسانی (Update Tuples) تاپل ها - باز کردن (Unpack Tuples) تاپل ها - حلقه (Loop Tuples) تاپل ها - چسباندن (Join Tuples) تاپل ها - متدها (Tuple Methods) مجموعه ها - (Sets) مجموعه ها - دسترسی به آیتم ها (Access Set Items) مجموعه ها - اضافه کردن آیتم (Add Set Items) مجموعه ها - حذف کردن آیتم ها (Remove Set Items) مجموعه ها - حلقه (Loop Sets) مجموعه ها - چسباندن (Join Sets) مجموعه ها - یخ زده (Frozen Sets) مجموعه ها - متدها (Set Methods) دیکشنری ها (Dictionaries) دیکشنری ها - دسترسی به آیتم ها (Access Dictionary Items) دیکشنری ها - تغییر آیتم ها (Change Dictionary Items) دیکشنری ها - اضافه کردن آیتم (Add Dictionary Items) دیکشنری ها - حذف کردن آیتم (Remove Dictionary Items) دیکشنری ها - حلقه (Loop Dictionaries) دیکشنری ها - کپی (Copy Dictionaries) دیکشنری ها - تو در تو (Nested Dictionaries) دیکشنری ها - متدها (Dictionary Methods) شرط ها (If...Else) مطابقت (Match) حلقه While (While Loops) حلقه For (For Loops) توابع (Functions) دکوراتورها (Decorators) محدوده (Range) لامبدا (Lambda) آرایه ها (Arrays) شی گرایی (OOP) کلاس ها و اشیاء (Classes and Objects) وراثت (Inheritance) تکرارکننده ها (Iterators) چندریختی (Polymorphism) محدوده (Scope) ماژول ها (Modules) تاریخ و زمان (Datetime) ریاضی (Math) جی سون (JSON) عبارت منظم (Regex) پیپ (PIP) استثنا (Try...Except) قالب بندی رشته ها (String Formatting) خالی (None) ورودی از کاربر (User Input) محیط مجازی (Virtual Enviroment)
PYTHON

Python — وراثت (Inheritance)

آخرین بروزرسانی: 1404/07/05

وراثت (Inheritance)

وراثت یا Inheritance یکی از ویژگی های مهم برنامه نویسی شی گرا در پایتون است. با استفاده از وراثت می توان کلاسی را تعریف کرد که تمام ویژگی ها و متدهای کلاس دیگر را به ارث ببرد. کلاسی که از آن ارث برده می شود کلاس والد (Parent Class) یا Base Class نام دارد و کلاسی که ارث بری می کند کلاس فرزند (Child Class) یا Derived Class نامیده می شود.

ایجاد کلاس والد

برای ایجاد کلاس والد همانند تعریف هر کلاس دیگری عمل می کنیم:

class Person:
    def __init__(self, fname, lname):
        self.firstname = fname
        self.lastname = lname

    def printname(self):
        print(self.firstname, self.lastname)

x = Person("John", "Doe")
x.printname()

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

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

class Student(Person):
    pass

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

نکته: زمانی که قصد افزودن ویژگی یا متد جدید ندارید می توانید از pass استفاده کنید.

متد __init__ در کلاس فرزند

اگر متد __init__() را در کلاس فرزند تعریف کنید، متد سازنده کلاس والد بازنویسی می شود. برای حفظ عملکرد والد می توانید آن را صریحاً فراخوانی کنید یا از super() استفاده نمایید:

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

افزودن ویژگی ها

می توان ویژگی های جدیدی به کلاس فرزند اضافه کرد. برای مثال ویژگی graduationyear:

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

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

افزودن متدها

کلاس فرزند می تواند متدهای جدیدی داشته باشد یا متدهای والد را بازنویسی کند:

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)

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

ادامه یادگیری

برای یادگیری بیشتر درباره کلاس ها و اشیاء در پایتون مطالعه کنید یا به بخش تکرارکننده ها (Iterators) بروید.