logo

Приватні методи в Python

Інкапсуляція є одним із фундаментальних понять у об'єктно-орієнтоване програмування (ООП) в 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>