FishHook
Вот в этом и есть всё противоречие нашей беседы. Публичные поля объекта входят в его интерфейс
Ну, давай ты ещё что-нибудь привяжешь к этому значению внутри класса, а какой-нибудь программист снаружи поменяет это значение прямо в процессе работы экземпляра (он-то не знает, что там что-то завязано). Поэтому запрещено и лезть в них, и расчитывать их для внешнего использования.
FishHook
Ты можешь сделать поле приватным и таким образом исключить его из интерфейса
Не, я делал так, получается сплошное уродство. Пройденный этап, в питоне всё открыто, но это не значит, что это надо использовать. В хелп они включаются, но это тоже для внутреннего использования подходит, а наружний пользователь не должен на это полагаться.
То есть нарушается инкапсуляция.
FishHook
Есть общепризнанная практика, помечать поля необходимые только для внутренней работы алгоритмов одним начальным подчеркиванием.
Не, напиши так несколько классов - увидишь. Это полностью инородное для питона, поэтому код выглядит просто ужасно.
FishHook
Тогда мы можем на свой страх и риск поломать совместимость
В питоне мы можем вообще много всего. Он делался как максимально гибкий с максимальным числом возможностей. Но многие вещи - это эксперименты, которые сами авторы не знают, как точно сделать (потому и существуют пепы, где все договариваются коллективно).