чем был спор: есть ли в питоне сокрытие? он утверждал, что нету
что за сокрытие?
инкапсуляция
на уровне соглашения
Ну ты с собеседником походу просто какого-то странного определения придерживался)
инкапсуляция есть, ограничений доступа нет
Инкапсуляция не сокрытие
не совсем. Атрибуты с префиксом __ "приватные" и к ним может обратиться только экземпляр объявившего этот атрибут класса.
not entirely true
Если ты про _class__attr, то это не спецификация, а деталь реализации. Насколько я понимаю. Как раз недавно искал работу и на собесе подкололи с этим. А я так же сначала сказал что нельзя к такому обратиться.
нет, это таки официально механизм языка
он о том что обратиться может любой, по результирующему имени.
Есть же protected методы
нет никаких protected
Приватные, пардон
в Java, C#...
package private ещё забыл
Ну да, там есть. Еще всякие разные
Там кстати как и в питоне их можно достать там где не надо
еще раз. в питоне нет спецификаторов доступа от слова совсем.
А что по твоему приватные методы которые не наследуются и их нельзя вызвать у инстанса класса?
def __private(self...
кто тебе сказал что они не наследуются?
class A: def __private(self): print("a") class B(A): ... B()._A__private()
Я же выше сказал, их можно во всех языках вызвать, необычными методами
в питоне т.н. приватные имена не имеют никакого отношения к спецификаторам доступа в других языках и имеют конкретно описанный сценарий использования
да, так сделано специально. И это не имеет отношения к спецификаторам доступа, это скорее механизм для исключения конфликтов имен при наследовании
о чем прямо сказано в документации, которую никто не читает
А сокрытие метода как побочный эффект?
сокрытие метода как часть механизма исключения конфликтов
Обсуждают сегодня