وراثت در پایتون

وراثت در پایتون
وراثت در پایتون یکی از مفاهیم بنیادی برنامهنویسی شیءگرا (OOP) در این زبان است که به شما امکان میدهد کلاسهای جدیدی را بر اساس کلاسهای موجود (کلاسهای پایه) ایجاد کنید. کلاسهای مشتق شده ویژگیها و متدهای کلاس پایه را به ارث میبرند و میتوانند ویژگیها و متدهای خود را نیز اضافه کنند.
وراثت به شما کمک میکند تا کد خود را سازماندهی کنید، از تکرار کد جلوگیری کنید و قابلیت استفاده مجدد از کد خود را افزایش دهید.
در این مقاله راهنمای جامع، به بررسی کامل وراثت در پایتون، از جمله نحو، ایجاد کلاسهای مشتق شده، دسترسی به ویژگیها و متدهای کلاس پایه، استفاده از super(), و نکات مهم، میپردازیم.
1. ایجاد کلاس مشتق شده
برای ایجاد یک کلاس مشتق شده از یک کلاس پایه، از کلمه کلیدی class به دنبال نام کلاس مشتق شده، پرانتز () و نام کلاس پایه استفاده میشود. سپس بدنه کلاس با بلوکی از کد که ویژگیها و متدهای کلاس مشتق شده را تعریف میکند، مشخص میشود.
class Person:
"""کلاس Person برای نمایش اطلاعات افراد"""
def __init__(self, name, age):
"""متد سازنده برای مقداردهی ویژگیهای نام و سن"""
self.name = name
self.age = age
def greet(self):
"""متدی برای چاپ سلام و نام و سن شخص"""
print(f"سلام، من {self.name} هستم و {self.age} سال سن دارم.")
class Student(Person):
"""کلاس Student برای نمایش اطلاعات دانشآموزان"""
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
def study(self):
print(f"{self.name} در حال مطالعه رشته {self.major} است.")
student1 = Student("علی", 30, "علوم کامپیوتر")
student1.greet() # سلام، من علی هستم و 30 سال سن دارم.
student1.study() # علی در حال مطالعه رشته علوم کامپیوتر است.
در این مثال:
Studentکلاس مشتق شده از کلاس پایهPersonاست.__init__متد سازنده کلاسStudentاست که ویژگیmajorرا نیز مقداردهی میکند.studyمتدی است که برای چاپ رشته تحصیلی دانشآموز استفاده میشود.super()متدی برای دسترسی به متدهای کلاس پایه است.
2. دسترسی به ویژگیها و متدهای کلاس پایه
میتوانید با استفاده از نقطه (.) و نام ویژگی یا متد، به ویژگیها و متدهای کلاس پایه از کلاس مشتق شده دسترسی داشته باشید.
print(student1.name) # علی
print(student1.age) # 30
student1.greet() # سلام، من علی هستم و 30 سال سن دارم.
3. استفاده از super()
متد super() برای دسترسی به متدهای کلاس پایه از کلاس مشتق شده استفاده میشود.
class Employee(Person):
"""کلاس Employee برای نمایش اطلاعات کارمندان"""
def __init__(self, name, age, company):
super().__init__(name, age)
self.company = company
def work(self):
print(f"{self.name} در حال کار در شرکت {self.company} است.")
employee1 = Employee("سارا", 25, "دیجیکالا")
employee1.greet() # سلام، من سارا هستم و 25 سال سن دارم.
employee1.work() # سارا در حال کار در شرکت دیجیکالا است.
در این مثال:
Employeeکلاس مشتق شده از کلاس پایهPersonاست.__init__متد سازنده کلاسEmployeeاست که ویژگیcompanyرا نیز مقداردهی میکند.workمتدی است که برای چاپ محل کار کارمند استفاده میشود.super().__init__(name, age)از متد سازنده کلاس پایه برای مقداردهی ویژگیهایnameوageاستفاده میکند.
4. نکات مهم
- از وراثت برای ایجاد سلسله مراتب کلاس و سازماندهی کد خود به طور منطقی استفاده کنید.
- از وراثت برای به اشتراکگذاری کد بین کلاسهای مختلف و جلوگیری از تکرار کد استفاده کنید.
- از وراثت برای ایجاد رابطها (interfaces) و انتزاع (abstraction) در برنامه خود استفاده کنید.
- از چند وراثتی (multiple inheritance) با احتیاط استفاده کنید، زیرا میتواند پیچیدگی را به برنامه شما اضافه کند.
- قبل از استفاده از وراثت، مطمئن شوید که رابطه بین کلاسهای پایه و مشتق شده به درستی تعریف شده است.
5. منابع مفید:
- آموزش وراثت در پایتون:جامعترین آموزش برنامه نویسی پایتون در ایران
- آموزش وراثت در پایتون: https://blog.faradars.org/%D8%A7%D8%B1%D8%AB-%D8%A8%D8%B1%DB%8C-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86/
در این مقاله، سعی کردیم به بررسی کامل وراثت در پایتون، از جمله نحو، ایجاد کلاسهای مشتق شده، دسترسی به ویژگیها و متدهای کلاس پایه، استفاده از super(), و نکات مهم، بپردازیم. با استفاده از وراثت میتوانید کد خود را به طور قابل توجهی بهبود ببخشید و برنامههای پیچیده و کارآمدتر بسازید.