Керування доступом до даних: приватні атрибути

Об'єктноорієнтоване програмування в Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Усі дані класу є публічними

ми тут усі дорослі

Об'єктноорієнтоване програмування в Python

Обмеження доступу

  • Угоди щодо назв
  • Використовуйте @property для налаштування доступу
  • Перевизначення __getattr__() і __setattr__()
Об'єктноорієнтоване програмування в Python

Угода про назви: внутрішні атрибути

obj._att_name, obj._method_name()

  • Починається з одного _ → «внутрішнє»
  • Не частина публічного API
  • Для користувача класу: «не чіпайте це»
  • Для розробника класу: для деталей реалізації, допоміжних функцій…

df._is_mixed_type , datetime._ymd2ord()

Об'єктноорієнтоване програмування в Python

Угода про назви: псевдоприватні атрибути

obj.__attr_name , obj.__method_name()

  • Починається, але не закінчується на __ → «приватне»
  • Не наслідується
  • Спотворення імені: obj.__attr_name інтерпретується як obj._MyClass__attr_name
  • Використовується, щоб уникати конфліктів імен у нащадках

 

Початкові та кінцеві __ використовують лише для вбудованих методів Python (__init__(),__repr__())!

Об'єктноорієнтоване програмування в Python

Давайте потренуємось!

Об'єктноорієнтоване програмування в Python

Preparing Video For Download...