Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 May 29

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Dingo 96
Кто подскажет, вопрос не понятно сформилурован
Вариант d это многопользовательские клиентсерверные субд, и это означает не локальные
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
ок
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Кирилл Картвелишвили
ну во-первых это поля а не переменные, а во-вторых зачем тебе доставать приватное поле? оно на то приватное, чтобы доступ из вне к нему был закрыт
ну способ взаимодействия с ним должен же быть какой то. иначе зачем это все. но видимо в след уроках будет разъяснено
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
при особом желании можно обратиться к приватному полю, но приватные поля созданы только для локального доступа к ним внутри класса. они не должны быть открыты
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Кирилл Картвелишвили
при особом желании можно обратиться к приватному полю, но приватные поля созданы только для локального доступа к ним внутри класса. они не должны быть открыты
для очевидного примера что хранят в приватных переменных? или полях всетаки?
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
зачем тогда вообще в объектно-ориентированных языках модификаторы доступа лол? всё публично пишем и нормально
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
класс пользователь. можно хранить логин пароль?
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
😍
для очевидного примера что хранят в приватных переменных? или полях всетаки?
то, что мы хотим контролировать. мы можем сделать поле приватным, но сделать для него геттер и сеттер. пользователь сможет взаимодействовать с полем, но только так, как мы этого хотим, то есть возраст, например, не может быть отрицательным, чтобы ограничить пользователю возможность установки отрицательного возраста нам нужно, чтобы это поле было приватным
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
в этом вся суть инкапсуляции. предоставить пользователю только нужный интерфейс без внутренностей
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
то есть пользователь не сможет написать user.age = -5. он сможет написать user.set_age(-5) и получить ошибку в лоб, потому что делать так нельзя)
источник

AA

AА AА in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Т.е только для проверок всяких это надо?
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
не только. есть просто методы или поля, о которых пользователю вообще не нужно знать. они нужны только для работы класса
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Использование нормальной функции для достижения поведения геттеров и сеттеров

Чтобы получить свойство getters & setters, если мы определим обычные методы get() и set() это не будет отражать какую-либо специальную реализацию. Например


# Программа Python, показывающая использование
# методов get () и set () в
# нормальная функция

 

class Geek:

   def init(self, age = 0):

        self._age = age

     

   # метод получения

   def get_age(self):

       return self._age

     

   # метод установки

   def set_age(self, x):

       self._age = x

 

raj = Geek()

 
# установка возраста с помощью сеттера

raj.set_age(21)

 
# получение возраста с использованием геттера

print(raj.get_age())

 

print(raj._age)
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
ну вот банальный пример, пускай мы создаём свой собственный класс list. внутри него обязательно должно быть приватное поле length, пользователь не может его изменить, он может его только прочитать, используя функцию len, которая вызовет метод '__len__', а он в частности вернёт наше приватное поле __length. если бы мы так не сделали, пользователь в любой момент мог бы сделать list.length = -5, и весь наш класс сломался бы
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Кирилл Картвелишвили
ну вот банальный пример, пускай мы создаём свой собственный класс list. внутри него обязательно должно быть приватное поле length, пользователь не может его изменить, он может его только прочитать, используя функцию len, которая вызовет метод '__len__', а он в частности вернёт наше приватное поле __length. если бы мы так не сделали, пользователь в любой момент мог бы сделать list.length = -5, и весь наш класс сломался бы
ну да понятно теперь для чего он. но в тоже время разве пользователь программы сможет изменить доступную переменную если мы не дадим доступ к ее обращению
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
так ему и не надо
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
внутри класса мы можем обращаться с нашими полями как угодно, неважно какой у них "модификатор доступа", а снаружи мы должны только предоставить интерфейс с помощью геттеров и сеттеров
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Кирилл Картвелишвили
внутри класса мы можем обращаться с нашими полями как угодно, неважно какой у них "модификатор доступа", а снаружи мы должны только предоставить интерфейс с помощью геттеров и сеттеров
для закрепления сеттер устанавливает . геттер читает поле
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
всё так
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
ещё поля можно называть атрибутами. в питоне все вот эти getattr, setattr и тд оно всё оттуда. в других языках это getprop, setprop от слова property (свойство)
источник