0xd34df00d
08.07.2011 21:21 Azoth_primary
Подумалось мне, что те, кто говорит, что ООП в питоне нет потому, что там нет private: — не совсем правы.
Если рассматривать с точки зрения, в которой все вокруг враги и так и норовят потеребить приватные члены (назовем это restrictive) — да, в питоне никакой инкапсуляции, кровьговно, приватных членов нет, пиздец.
Но если рассматривать с позиции, при которой сокрытие реализации требует лишь отсутствия необходимости пересобирать зависимый от класса код, а врагов вокруг поменьше (назовем это permissive), то все ок.
Правда, я щас прочитал свой пост еще раз и подумал, что программистов, живущих в permissive-мирке, надо кастрировать при рождении и выжигать огнем еще раньше, но пост уже написан, а удалять графомания не позволяет :3
Recommended by:
@komar
но зачем кастрировать? Duck typing и Easier To Ask For Forgiveness Than For Permission же.
Олсо, есть properties и вообще data descriptors. Запрашиваешь/устанавливаешь атрибут — объект понимает и полиморфично выполняет запрос.
%%олсо сейчас найду статью, в которой показывается, что в C++ нет инкапсуляции either%%
А в сиплюсплюс без PImpl ее и нету.
пимпл — костыли.
Да.
вопрос в том, действительно нужна ли в такой строжайшей степени инкапсуляция, как того требуют теоретики ООП.
В плюсах она убогая потому, что изменение приватных членов без пимпла требует перекомпиляции всего подряд, но в то же время доступа к приватам нету, а это нужно ИРЛ.
ну, если уж доступ к приватам предусмотрен поведением объекта, то нужно выставлять аксесоры.
Я в #egheg не говорил, что в Python нет ООП — это так, уточнение просто. Я бы не шёл на такие крайние меры, как ты предлагаешь, но restrictive-манера мне таки нравится больше (возможно, из-за того, что моё понимание ООП ограничено паршивеньким знанием C++).
именно из-за этого, да.
О, статью обязательно найди, я с удовольствием почитал бы.
Меня просто твой пост вдохновил.
Да вы как сектанты какие-то.
вот, "Subclassing errors, OOP, and practically checkable rules to avoid them": http://arxiv.org/pdf/cs/0301032
Тут есть какая-то сокращённая версия: http://okmij.org/ftp/Computation/Subtypi...
Самое смешное в выводах этой статьи — это обоснование того, что «корректное» ООП нужно строить в функциональном стиле: иммутабельные инстансы, никаких виртуальных методов и тому подобное.
Спасибо!
Да это же http://caml.inria.fr/pub/docs/manual-oca...