0xd34df00d 08.07.2011 21:21 Azoth_primary

Подумалось мне, что те, кто говорит, что ООП в питоне нет потому, что там нет private: — не совсем правы.
Если рассматривать с точки зрения, в которой все вокруг враги и так и норовят потеребить приватные члены (назовем это restrictive) — да, в питоне никакой инкапсуляции, кровьговно, приватных членов нет, пиздец.
Но если рассматривать с позиции, при которой сокрытие реализации требует лишь отсутствия необходимости пересобирать зависимый от класса код, а врагов вокруг поменьше (назовем это permissive), то все ок.

Правда, я щас прочитал свой пост еще раз и подумал, что программистов, живущих в permissive-мирке, надо кастрировать при рождении и выжигать огнем еще раньше, но пост уже написан, а удалять графомания не позволяет :3

Recommended by: @komar
1. ulidtko 08.07.2011 21:25 lunatic asylum

но зачем кастрировать? Duck typing и Easier To Ask For Forgiveness Than For Permission же.
Олсо, есть properties и вообще data descriptors. Запрашиваешь/устанавливаешь атрибут — объект понимает и полиморфично выполняет запрос.

%%олсо сейчас найду статью, в которой показывается, что в C++ нет инкапсуляции either%%

2. 0xd34df00dulidtko /1 08.07.2011 21:27 Azoth_primary

А в сиплюсплюс без PImpl ее и нету.

3. ulidtko0xd34df00d /2 08.07.2011 21:27 lunatic asylum

пимпл — костыли.

4. 0xd34df00dulidtko /3 08.07.2011 21:28 Azoth_primary

Да.

5. ulidtko0xd34df00d /4 08.07.2011 21:29 lunatic asylum

вопрос в том, действительно нужна ли в такой строжайшей степени инкапсуляция, как того требуют теоретики ООП.

6. 0xd34df00dulidtko /5 08.07.2011 21:31 Azoth_primary

В плюсах она убогая потому, что изменение приватных членов без пимпла требует перекомпиляции всего подряд, но в то же время доступа к приватам нету, а это нужно ИРЛ.

7. ulidtko0xd34df00d /6 08.07.2011 21:32 lunatic asylum

ну, если уж доступ к приватам предусмотрен поведением объекта, то нужно выставлять аксесоры.

8. Minoru 08.07.2011 21:32 netbook

Я в #egheg не говорил, что в Python нет ООП — это так, уточнение просто. Я бы не шёл на такие крайние меры, как ты предлагаешь, но restrictive-манера мне таки нравится больше (возможно, из-за того, что моё понимание ООП ограничено паршивеньким знанием C++).

9. ulidtkoMinoru /8 08.07.2011 21:33 lunatic asylum

именно из-за этого, да.

10. Minoruulidtko /1 08.07.2011 21:33 netbook

О, статью обязательно найди, я с удовольствием почитал бы.

11. 0xd34df00dMinoru /8 08.07.2011 21:33 Azoth_primary

Меня просто твой пост вдохновил.

12. 0xd34df00dulidtko /9 08.07.2011 21:34 Azoth_primary

Да вы как сектанты какие-то.

13. ulidtkoMinoru /10 08.07.2011 21:42 lunatic asylum

вот, "Subclassing errors, OOP, and practically checkable rules to avoid them": http://arxiv.org/pdf/cs/0301032
Тут есть какая-то сокращённая версия: http://okmij.org/ftp/Computation/Subtypi...

Самое смешное в выводах этой статьи — это обоснование того, что «корректное» ООП нужно строить в функциональном стиле: иммутабельные инстансы, никаких виртуальных методов и тому подобное.

14. Minoruulidtko /13 08.07.2011 21:48 netbook

Спасибо!

15. komarulidtko /13 08.07.2011 21:49 pavilion

Да это же http://caml.inria.fr/pub/docs/manual-oca...

Do you really want to delete ?