Інкапсуляція є одним із фундаментальних понять у об'єктно-орієнтоване програмування (ООП) в Python. Він описує ідею упаковки даних і методи, які працюють з даними в одному модулі. Це накладає обмеження на прямий доступ до змінних і методів і може запобігти випадковій зміні даних. Клас є прикладом інкапсуляції, оскільки він інкапсулює всі дані, які є членами функції , змінні і т. д. Тепер можуть виникнути деякі сценарії, в яких нам потрібно буде накласти обмеження на деякі методи класу, щоб до них не можна було отримати доступ ні за межами класу, ні для будь-яких підкласів. Для реалізації цього використовуються приватні методи.
Пфункції rivate в Python
Розглянемо приклад із реального життя, двигун автомобіля, який складається з багатьох частин, таких як свічки запалювання, клапани, поршні тощо. Жоден користувач не використовує ці частини безпосередньо, вони просто знають, як використовувати частини, які їх використовують. Для цього і використовуються приватні методи. Він використовується для приховування внутрішньої функціональності будь-якого класу від зовнішнього світу. Приватні методи це ті методи, до яких не можна звертатися ні поза класом, ні будь-яким базовим класом. У Python не існує приватних методів, до яких можна отримати доступ, окрім як усередині класу. Однак, щоб визначити приватний метод, до імені члена додайте префікс подвійне підкреслення __ . Примітка: Метод __init__ — це a конструктор і запускається, як тільки об’єкт класу створюється.
Python3
приклади коду java
# Creating a Base class> class> Base:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> # Creating a derived class> class> Derived(Base):> >def> __init__(>self>):> ># Calling constructor of> ># Base class> >Base.__init__(>self>)> >def> call_public(>self>):> ># Calling public method of base class> >print>(>'
Inside derived class'>)> >self>.fun()> >def> call_private(>self>):> ># Calling private method of base class> >self>.__fun()> # Driver code> obj1>=> Base()> # Calling public method> obj1.fun()> obj2>=> Derived()> obj2.call_public()> # Uncommenting obj1.__fun() will> # raise an AttributeError> # Uncommenting obj2.call_private()> # will also raise an AttributeError> |
>
як отримати емодзі з iphone на android
>
Вихід:
Public method Inside derived class Public method>
Traceback (most recent call last): File '/home/09d6f91fdb63d16200e172c7a925dd7f.py', line 43, in obj1.__fun() AttributeError: 'Base' object has no attribute '__fun' Traceback (most recent call last): File '/home/0d5506bab8f06cb7c842501d9704557b.py', line 46, in obj2.call_private() File '/home/0d5506bab8f06cb7c842501d9704557b.py', line 32, in call_private self.__fun() AttributeError: 'Derived' object has no attribute '_Derived__fun'>
Наведений вище приклад показує, що приватні методи класу не можуть бути доступні ні поза класом, ні будь-яким базовим класом. Однак до приватних методів можна отримати доступ, викликавши приватні методи через публічні методи.
приклад:
Python3
перейменування каталогу
# Creating a class> class> A:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> ># Calling private method via> ># another method> >def> Help>(>self>):> >self>.fun()> >self>.__fun()> # Driver's code> obj>=> A()> obj.>Help>()> |
>
>
Вихід:
Public method Private method>
Спотворення імені
Python надає чарівну паличку, яку можна використовувати для виклику приватних методів поза класом, це відомо як спотворення імен. Це означає, що будь-який ідентифікатор у формі __geek (принаймні два підкреслення на початку або не більше одного підкреслення в кінці) замінюється на _classname__geek, де ім’я класу є поточним ім’ям класу з видаленим підкресленням на початку.
відсортований список масивів у java
приклад:
Python3
ціле число Java
# Creating a class> class> A:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> # Driver's code> obj>=> A()> # Calling the private member> # through name mangling> obj._A__fun()> |
>
>
Вихід:
Private method>