Приватность свойств. Name Mangling (_name и __name)
Для установления приватности для класса добавляют __
в начале имени свойства (переменной, функции)
from datetime import datetime
class Person:
def __init__(self, name, surname, birthday):
self._name = name
self._surname = surname
self.__birthday = birthday
self.name = f"{self._name} {self._surname}"
@staticmethod
def _get_current_time():
return datetime.now()
def _show_birthday(self):
return self.__birthday
def print_data(self):
print(f"Now {self._get_current_time()}: {self.name} Birthday: {self._show_birthday()}")
people1 = Person("Dmitry", "Budaev", "14.04.1989")
12345678910111213141516171819202122
print(people1.print_data)
# дословно - связный метод Person.print_data объекта Person
# <bound method Person.print_data of <__main__.Person object at 0x7fb9ef1a1690>>
print(hex(id(people1)))
# 0x7fb9ef1a1690s
print(people1.__dict__)
# {'_name': 'Dmitry', '_surname': 'Budaev', '_Person__birthday': '14.04.1989', 'name': 'Dmitry Budaev'}
# '_Person__birthday' - это и есть защищённый метод self.__birthday
Last updated