Уведомления

Группа в Telegram: @pythonsu

#1 Июль 9, 2011 09:26:32

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

o7412369815963
Я по интуиции и опыту…
Я не сомневаюсь в вашем опыте, но добавлю свое имхо.
Классы надо использовать в тех случаях, когда в задаче видно взаимодействие объектов реального мира. Вот их свойства и поведение и надо отражать в классах. С этим проблем не возникнет?
Если интересует очень подробное и понятное объяснение классов, то можно обратиться к соответствующим главам книги “Совершенный код” Стива МакКонела (фамилию автора точно не помню, может ошибся в буквах).



Офлайн

#2 Июль 9, 2011 10:25:40

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Python: procedural or object-oriented programming

Ну и понаписали…
Питон, это в первую очередь объектно ориентированный язык: в питоне всё является объектами. Гвидо отказывается добавить в питон хвостовую рекурсию, чтобы меньше идиотов писали непонятный функциональный код (не путайте, кстати, с императивным).
Использовать ООП в питоне можно и нужно практически везде. Я не спорю с dartNNN'ом, я просто вижу это взаимодействие практически во всём. Ну да, в скрипте на 50 строк может оно и не надо, но если вдруг что-то большее…



Офлайн

#3 Июль 20, 2011 19:34:00

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

Попробуйте для начала написать на ПАСКАЛЕ библиотеку для работы со связанными списками (б-три деревьями) …



Офлайн

#4 Сен. 28, 2011 23:06:23

usmix
От:
Зарегистрирован: 2011-07-08
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

Ну, а в целом (если рассуждать вне Питона) есть свои плюсы и минусы ООП:
Почему объектно-ориентированное программирование провалилось?
и там же комментарий



Офлайн

#5 Окт. 6, 2011 04:59:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

Nata
Я не могу спорить с преподом, ему видней.
а пространства имён он как делает ?
представь, что строки были бы не объектами, а просто строками (без методов)
понадобилось бы сорок функций, чтобы просто по-разному работать со строкой
вот в php как раз и есть много-много функций

Nata
как понять, что для данной проблемы функциями не ограничишься и нужно вводить классы?
ну когда хочешь создать какой-нибудь видоизменённый объект
или создаёшь матрицы, вот их нет в питоне (может есть в модулях), ну и что, как ты будешь их умножать ?
удобнее сделать c = a * b, а не c = matrix_multiply(a, 3, 4, b, 4, 5)

ты просто посмотри, как вообще сделан питон, как он работает и за счёт чего в нём всё просто



Офлайн

#6 Окт. 17, 2011 17:50:28

Nata
От:
Зарегистрирован: 2010-10-02
Сообщения: 87
Репутация: +  6  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

py.user.next
ты просто посмотри, как вообще сделан питон, как он работает и за счёт чего в нём всё просто
Я знаю, что питон сплошь состоит из объектов. Вопрос не в структуре самого питона, а в стиле програмирования на нем. Если нужно решить задачу, нужно ли, следуя законам жанра, вводить классы, усложняя тем самым решение задачи, когда достаточно ввести пару функций?

helm2004
В третьих, классы очень нужны в больших проектах, когда программируют 4 и больше программера.
У нас был “большой проект” (в нашей группе 14 человек) и мы не использовали классы, так как их не было в программе, хотя в группе у большинства первое образование “computer science” и они уж точно знакомы с ООП, в отличие от меня.

А матрицы мы умножаем в NumPy :)



Офлайн

#7 Окт. 19, 2011 09:48:59

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

Если нужно решить задачу, нужно ли, следуя законам жанра, вводить классы, усложняя тем самым решение задачи, когда достаточно ввести пару функций?
Нет, не надо. Более того, лично я, программируя на питоне, как человек испорченный в свое время C++, как правило использую ООП. Но для реализации таких GoF шаблонов как strategy, template method и т.п. очень часто пользуюсь именно функциями. Принцип простой - “Бритва Оккама” - если для реализации функционала достаточно функции, а не объекта - использую функцию. Тем более, что метод __call__ позволяет, при необходимости сохранения состояния функтора, вместо функций использовать объекты.

For the majority of programs it is enough to use standard data types and functions. Classes in python are redundant and are not necessary, they make the code overcomplicated and verbose. This is not Java. It is more of procedural programming than object-oriented
Мдаа… запущенный случай. Хотя до изобретения Django этого подхода многие придерживались. Но после Django такой подход уже безнадежно устарел, ПМСМ.



Офлайн

#8 Окт. 19, 2011 10:47:35

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

ziro
Мдаа… запущенный случай. Хотя до изобретения Django этого подхода многие придерживались. Но после Django такой подход уже безнадежно устарел, ПМСМ.
И что же такого нового принесло с собой Django?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Окт. 19, 2011 11:27:11

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

И что же такого нового принесло с собой Django?
Если коротко - интенсивное использование метаклассов, и как следствие снижение объема кода, повышение его читаемости, ну на вскидку. Метаклассы и раньше использовали, естественно, но крупного и, главное, популярного проекта, в котором использование метаклассов приводило к качественному скачку при описании объектов системы, до джанги не было.

А вообще фраза относилась больше к “they make the code overcomplicated and verbose”



Офлайн

#10 Окт. 20, 2011 08:27:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Python: procedural or object-oriented programming

Nata
Я знаю, что питон сплошь состоит из объектов.
и почему же он состоит из объектов ?
как раз за счёт объектов и достигается та простота
там берёшь любую штуку, а она уже умная, для неё не надо ничего писать
и ты можешь тоже такую сделать

Nata
Если нужно решить задачу, нужно ли, следуя законам жанра, вводить классы, усложняя тем самым решение задачи, когда достаточно ввести пару функций?
Nata
А матрицы мы умножаем в NumPy
а как бы ты сама написала ?
тебе больше нравится:
1) multi_matrix(a, multi_matrix(b, c))
2) a * b * c

или, к примеру, сложить два изображения
где такие библиотеки ?
img1 + img2



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version