ساخت یک کلاس abstract در پایتون :
در زبان برنامهنویسی پایتون، کلاسها میتوانند به صورت abstract تعریف شوند. یک کلاس abstract به معنی یک کلاس است که نمیتواند مستقیماً ایجاد شود و تنها میتواند توسط کلاسهای فرزند ارث بری شود. این کلاسها برای تعریف یک الگوی کلی برای کلاسهای فرزند استفاده میشوند و نمیتوانند مثال ایجاد کنند.
برای ساخت یک کلاس abstract در پایتون، از ماژول abc (Abstract Base Classes) استفاده میشود. این ماژول قابلیتهای مختلفی را برای تعریف کلاسهای abstract در پایتون فراهم میکند.
ابتدا برای استفاده از ماژول abc، آن را وارد کرده و کلاسهای abstract را تعریف میکنیم. به عنوان مثال، فرض کنید که میخواهیم یک کلاس abstract به نام “Shape” تعریف کنیم که شامل یک متد به نام “area” باشد:
“`python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
“`
در این مثال، کلاس “Shape” از کلاس ABC ارث بری میکند. کلاس ABC یک کلاس abstract است که از ماژول abc وارد شده است. همچنین، متد “area” با استفاده از دکوراتور @abstractmethod تعریف شده است. این دکوراتور به کلاسهای فرزند اجبار میکند که این متد را پیادهسازی کنند.
حال میتوانیم کلاسهای فرزند را از کلاس “Shape” ایجاد کنیم و متد “area” را پیادهسازی کنیم. به عنوان مثال، فرض کنید که میخواهیم یک کلاس به نام “Rectangle” ایجاد کنیم که از کلاس “Shape” ارث بری کند و متد “area” را پیادهسازی کند:
“`python
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
“`
در این مثال، کلاس “Rectangle” از کلاس “Shape” ارث بری میکند و متد “area” را پیادهسازی میکند. در اینجا، محاسبه مساحت مستطیل بر اساس عرض و ارتفاع آن انجام میشود.
اکنون میتوانیم یک نمونه از کلاس “Rectangle” ایجاد کنیم و متد “area” را فراخوانی کنیم:
“`python
rectangle = Rectangle(3, 4)
print(rectangle.area()) # Output: 12
“`
در اینجا، یک نمونه از کلاس “Rectangle” با ابعاد 3 و 4 ایجاد میشود و متد “area” فراخوانی میشود که باعث محاسبه مساحت مستطیل میشود و نتیجه 12 را چاپ میکند.
به این ترتیب، با استفاده از کلاسهای abstract، میتوانیم الگوهای کلی برای کلاسهای فرزند تعریف کنیم و نیاز به پیادهسازی تکتک متدها را در کلاسهای فرزند اجبار میکنیم. این الگوها و کلاسهای abstract به ما امکان میدهند تا برنامههایی با ساختار منظم و سازمانیافتهتر را ایجاد کنیم.