Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Визначення приватних атрибутів | Інкапсуляція
Об'єктно-орієнтоване програмування на Python

bookВизначення приватних атрибутів

Свайпніть щоб показати меню

Приватні атрибути забезпечують найвищий рівень захисту даних у моделі інкапсуляції Python. Використання подвійних підкреслень активує механізм іменного спотворення (name mangling) Python, перетворюючи чутливі атрибути на майже недоступні ідентифікатори. Це забезпечує надійний захист від випадкового втручання та сприяє створенню безпечних, професійних класів.

123456789101112131415161718192021
class BankAccount: def __init__(self, owner, balance): self.owner = owner # Public attribute self.__balance = balance # Private attribute def deposit(self, amount): if amount > 0: self.__balance += amount print(f"Deposited {amount}. New balance: {self.__balance}") else: print("Deposit amount must be positive.") def withdraw(self, amount): if 0 < amount <= self.__balance: self.__balance -= amount print(f"Withdrew {amount}. New balance: {self.__balance}") else: print("Invalid withdrawal amount.") def get_balance(self): return self.__balance
copy
Note
Примітка

Хоча приватні атрибути технічно можна отримати через їх спотворені імена, це порушує принцип інкапсуляції і не повинно використовуватися у виробничому коді.

Приватний атрибут, такий як __balance у BankAccount, автоматично перейменовується на _BankAccount__balance за допомогою механізму name mangling. Це ускладнює прямий доступ і відлякує від зовнішнього використання.

Приватні атрибути захищають чутливий стан і забезпечують взаємодію лише через перевірені публічні методи. У класах на кшталт Wallet або BankAccount дані, такі як баланс, PIN-код і історія транзакцій, залишаються приватними, а методи на кшталт deposit(), withdraw() і authenticate() забезпечують дотримання правил і підтримують безпеку.

question mark

Яка основна мета приватних атрибутів у Python?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 5. Розділ 2
some-alt