Minoru
08.07.2011 21:17 netbook
Итак, ООП в Python:
• сокрытие (приватные члены)? Не, не слышал.
• при наследовании можно получить кровь-кишки-неправильное поведение из-за переопределённых в наследнике методов. Защищаться от этого нужно отдельным костылём — приватным полем с копией метода. Ой, погодите, в Python ведь не может быть приватных полей… • ссылка на текущий объект таскается в явном виде (выступая первым параметром каждого метода). Вкупе с тем фактом, что метод передачи аргумента зависит от его типа (и, следовательно, является неявным — см. #eessi), это просто рвёт мне шаблон — цирк же, ну.
Я, конечно, понимаю, что идеальных вещей быть не может, но не настолько же!
1. http://docs.python.org/tutorial/classes....
ты обкурился?
Инкапсуляция != ООП. А вообще, юзай себе _ имена. Или __, если тебе хочется
__more___underscores_____means_more____________coolness_______________
Да, инкапсуляция не является неотъемлемым свойством ООП, но чёрт, это настолько удобная фича, что я не представляю себе причин не имплементировать её.
А вообще, для общего образования почитай http://mail.python.org/pipermail/tutor/2...
она не нужна. Приколы с протектед навязаны что бы сделать код менее удобным. Если ты хочешь изменить что-то что менять не должен, значит архитектура неправильная, и это тру
Интересная философия, конечно — «The Python way is to believe that we are all intelligent programmers and trust us». Возможно, они таки правы,
Если кто-то хочет изменить то, что менять не должен, также вполне вероятно, что он либо глуп, либо очень умён — настолько, что думает в стиле «ну, я сейчас это всё аккуратно поменяю, никто и не заметит». И в итоге всё летит к чертям :) А было бы поле private — то есть вообще без возможности поментяь его извне напрямую, у чувака охота таки пропала бы.
Впрочем, я никогда не писал ООП-код вместе с кем-то, а написанный мной код никто никогда не дописывал и не использовал в своих разработках, так что все мои суждения по поводу полезности private — умозрительны и не подкреплены практикой. Так что я могу быть совершенно не прав :)
есть идея, что в дизайне проблема, если человек хочет доступится к чему-то, что закрыто. Обычно, используют интерфейсы, что бы делать абстракции — тогда к чему нету интерфейса, то и недоступно... Все вроде просто, не?
а защищать методы, ИМХО, не наш путь. Хотя, если сильно хочется, можно же их делать приватными и доступаться через жопу. Но, понимаешь, это тупо не питон вей. В любой эдвансед книге, тебе расскажут, что для таких подходов есть С++, или С№... Питон для другого.
Ну вот я пока что cannot into Python way :( Надеюсь, в процессе юзания таки привыкну.
Суть Python way:
.Like Guido says, "we are all adults".
++
Повеселило.
Ктати, у меня тут есть открытый поржет на пайтоне. ООП во все поля. Немного оверинжинир и запутан, но по своему красив.мож присоеденишся?
Кстате, очень советую книгу "дайв инто пайтон (3)"
Написана в стиле "для программистов" и довольно приятно читается
дваждую про книгу
Спасибо за предложение, но я лучше сначала разберусь с проектом, для которого, собственно, и учу Python.
А чему такому может научить книга, о чём не рассказано в Tutorial? Гуглом я пользоваться умею, новые знания по мере необходимости добуду, ну и PEP'ы о Code Style и Dzen почитать намерен :)
Хм... Вроде не научит, но лично я ее прочитал за вечер и куда приятнее туторила. Читать/качать там:
http://diveintopython.org/ и http://diveintopython3.org/
Спасибо. Просмотрел содержание: да, в конце идут темы, которых нет в туториале, но они там не особо и нужны — вещи вроде обработки HTML/XML не настолько типичны, чтобы всем обязательно было о них читать. А вот разделы о Unit testing и Test-first development я точно по окончании туториала прочту.
а потом еще всю стандартную библиотеку от корки до корки...
XML лишним не будет точно
Ну, мне лично такой метод не очень — забываю все. А когда с ним работаешь, то как то проще. Да и батареек у питона как то слишком много
Да ты ниасилятор, я посмотрю :)
На плюсах кодишь что-ли?
На плюсах я пишу только постольку поскольку это требуется в универе. Удовольствия они мне не приносят, а до Smalltalk я ещё не добрался :)
Угадай, как я догадался об этом?
Да, я понимаю, что факт моего знакомства с ООП только в контексте C++ довольно очевиден. К чему ты ведёшь? Провоцируешь срачик, или таки хочешь чем-то ценным поделиться?
Намекаю, что ООП в плюсах — ни разу не ОО :)