ویرگول
ورودثبت نام
Mostafa jafari
Mostafa jafariاومدم تا یاد بگیرم و استفاده کنم از کامپیوتر تا برق صنعتی و ساختمانی و تاسیاست و لوله کشی ... تا زندگی و مسائل شخصی ... نمیدونم انتهای مسیرم کجاست ... فقط ادمه میدم
Mostafa jafari
Mostafa jafari
خواندن ۲ دقیقه·۴ سال پیش

abstraction in python

در برنامه‌نویسی، abstraction به معنی پنهان‌سازی جزئیات پیاده‌سازی یک قابلیت از کاربران است. به طور خاص، abstraction به کار می‌رود تا کاربران بتوانند با استفاده از یک واسط سطح بالاتر، از قابلیت‌های پیچیده و جزئیات پیاده‌سازی آن استفاده کنند بدون اینکه بخش‌های جزئی تحت پوشش تابع یا کلاس مورد نظر را بدانند.


در پایتون، abstraction می‌تواند به چندین شکل اجرا شود، اما دو روش اصلی آن عبارت‌اند از:


۱. Abstract Base Classes: این روش به کار می‌رود که یک واسط سطح بالا را تعریف کنید و تمام کلاس‌هایی که قرار است از آن ارث‌بری کنند، باید متدهای آن را پیاده‌سازی کنند. برای این کار، از ماژول abc در پایتون استفاده می‌شود. به عنوان مثال، فرض کنید می‌خواهید یک واسط برای یک کلاس Shape تعریف کنید که دو متد area و perimeter در آن وجود دارد:


python

import abc


class Shape(metaclass=abc.ABCMeta):


@abc.abstractmethod

def area(self):

pass


@abc.abstractmethod

def perimeter(self):

pass



در این کد، با استفاده از abc.ABCMeta، یک کلاس انتزاعی به نام Shape تعریف شده است. این کلاس دو متد انتزاعی به نام area و perimeter را تعریف کرده است که هر کدام از کلاس‌های ارث‌بری کننده باید آن را پیاده‌سازی کنند.


۲. Decorators: روش دیگر برای پنهان‌سازی جزئیات پیاده‌سازی، استفاده از دکوراتورهاست. با استفاده از دکوراتورها می‌توانید یک تابع را به یک تابع مشابه تبدیل کنید، اما با پنهان‌سازی جزئیات پیاده‌سازی آن. به عنوان مثال، فرض کنید می‌خواهید یک تابع به نام encrypt بنویسید که یک رشته متنی را رمزگذاری کند. با استفاده از دکوراتور @wraps، می‌توانید نام تابع اصلی را حفظ کنید:


python

from functools import wraps


def encrypt(func):

@wraps(func)

def wrapper(*args, **kwargs):

# کد رمزگذاری

return func(*args, **kwargs)

return wrapper



در این کد، با استفاده از دکوراتور @wraps، نام تابع اصلی encrypt حفظ شده است. همچنین، تابع wrapper با گرفتن هر پارامتری که به encrypt داده شده است، اجرا شده و نتیجه به عنوان خروجی برگردانده می‌شود. با استفاده از این دکوراتور، جزئیات پیاده‌سازی تابع encrypt پنهان شده و کاربران می‌توانند از آن با استفاده از نام encrypt استفاده کنند.

۲
۰
Mostafa jafari
Mostafa jafari
اومدم تا یاد بگیرم و استفاده کنم از کامپیوتر تا برق صنعتی و ساختمانی و تاسیاست و لوله کشی ... تا زندگی و مسائل شخصی ... نمیدونم انتهای مسیرم کجاست ... فقط ادمه میدم
شاید از این پست‌ها خوشتان بیاید