پایتون روز- 35 انتزاع ، محاصره

پیشنهاد ویژه
[button color="primary" size="big" link="https://nabfollower.com/buy-real-follower/" icon="" target="true" follow="false"]خرید فالوور واقعی[/button][button color="primary" size="big" link="https://nabfollower.com/buy-instagram-like/" icon="" target="true" follow="false"]خرید لایک اینستاگرام[/button][button color="primary" size="big" link="https://nabfollower.com/buy-instagram-views/" icon="" target="true" follow="false"]خرید ویو اینستاگرام[/button][button color="primary" size="big" link="https://nabfollower.com/" icon="" target="true" follow="false"]خرید فالوور اینستاگرام[/button]
انتزاع:
-> انتزاع برای پنهان کردن عملکرد داخلی عملکرد از کاربران استفاده می شود.
-> کاربران فقط با اجرای اصلی عملکرد تعامل دارند ، اما کار داخلی پنهان است.
-> کاربر با آن “آنچه عملکرد انجام می دهد” آشنا است اما آنها نمی دانند “چگونه این کار را انجام می دهد.”
-> انتزاع با استفاده از کلاسهای انتزاعی و روشهای انتزاعی اجرا می شود ، که توسط ماژول ABC (کلاس پایه) ارائه شده است.
کلاس انتزاعی کلاس است که نمی تواند فوری شود (یعنی شما نمی توانید یک شی از آن ایجاد کنید). روشهای انتزاعی نباید بدن داشته باشندpass
باید داده شود
مثال: 1
from abc import *
class Demo(ABC):
@abstractmethod
def display(self):
print("ABCD")
d = Demo()
d.display()
خروجی:
TypeError: Can't instantiate abstract class Demo without an implementation for abstract method 'display'
مثال: 2
from abc import *
class Parent(ABC):
@abstractmethod
def study(self):
pass
class Child(Parent):
def study(self):
print("Commerce")
child = Child()
child.study()
خروجی:Commerce
مثال: 3
from abc import *
class Parent(ABC):
@abstractmethod
def study(self):
pass
class Child(Parent):
def study(self):
print("Commerce")
@abstractmethod
def test(self):
pass
class GrandChild(Child):
def test(self):
pass
child = GrandChild()
child.study()
خروجی:Commerce
محصور سازی:
محصور سازی به بسته بندی داده ها (متغیرها) و روش ها (توابع) به یک واحد (کلاس) واحد اشاره دارد و ضمن محدود کردن دسترسی مستقیم به برخی از جزئیات شی.
ویژگی های محصور سازی:
-> داده ها را از اصلاح تصادفی محافظت می کند
-> اجرای داخلی را پنهان می کند و فقط جزئیات لازم را در معرض نمایش می گذارد.
مثال:
class Infosys:
employees_count = 100000
_profit = 100
__project_bid = 50
def display(self):
print(self.employees_count, self._profit, self.__project_bid)
inf = Infosys()
#inf.display()
print(inf.employees_count)
print(inf._profit)
print(inf.__project_bid)
خروجی:
100000
100
AttributeError: 'Infosys' object has no attribute '__project_bid'