Управление доступом к данным: приватные атрибуты

Объектно-ориентированное программирование на 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...