Найти - Пользователи
Полная версия: Python: procedural or object-oriented programming
Начало » Флейм » Python: procedural or object-oriented programming
1 2 3
dartNNN
o7412369815963
Я по интуиции и опыту…
Я не сомневаюсь в вашем опыте, но добавлю свое имхо.
Классы надо использовать в тех случаях, когда в задаче видно взаимодействие объектов реального мира. Вот их свойства и поведение и надо отражать в классах. С этим проблем не возникнет?
Если интересует очень подробное и понятное объяснение классов, то можно обратиться к соответствующим главам книги “Совершенный код” Стива МакКонела (фамилию автора точно не помню, может ошибся в буквах).
ZZZ
Ну и понаписали…
Питон, это в первую очередь объектно ориентированный язык: в питоне всё является объектами. Гвидо отказывается добавить в питон хвостовую рекурсию, чтобы меньше идиотов писали непонятный функциональный код (не путайте, кстати, с императивным).
Использовать ООП в питоне можно и нужно практически везде. Я не спорю с dartNNN'ом, я просто вижу это взаимодействие практически во всём. Ну да, в скрипте на 50 строк может оно и не надо, но если вдруг что-то большее…
zheromo
Попробуйте для начала написать на ПАСКАЛЕ библиотеку для работы со связанными списками (б-три деревьями) …
usmix
Ну, а в целом (если рассуждать вне Питона) есть свои плюсы и минусы ООП:
Почему объектно-ориентированное программирование провалилось?
и там же комментарий
py.user.next
Nata
Я не могу спорить с преподом, ему видней.
а пространства имён он как делает ?
представь, что строки были бы не объектами, а просто строками (без методов)
понадобилось бы сорок функций, чтобы просто по-разному работать со строкой
вот в php как раз и есть много-много функций

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

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

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

А матрицы мы умножаем в NumPy :)
ziro
Если нужно решить задачу, нужно ли, следуя законам жанра, вводить классы, усложняя тем самым решение задачи, когда достаточно ввести пару функций?
Нет, не надо. Более того, лично я, программируя на питоне, как человек испорченный в свое время 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 такой подход уже безнадежно устарел, ПМСМ.
PooH
ziro
Мдаа… запущенный случай. Хотя до изобретения Django этого подхода многие придерживались. Но после Django такой подход уже безнадежно устарел, ПМСМ.
И что же такого нового принесло с собой Django?
ziro
И что же такого нового принесло с собой Django?
Если коротко - интенсивное использование метаклассов, и как следствие снижение объема кода, повышение его читаемости, ну на вскидку. Метаклассы и раньше использовали, естественно, но крупного и, главное, популярного проекта, в котором использование метаклассов приводило к качественному скачку при описании объектов системы, до джанги не было.

А вообще фраза относилась больше к “they make the code overcomplicated and verbose”
py.user.next
Nata
Я знаю, что питон сплошь состоит из объектов.
и почему же он состоит из объектов ?
как раз за счёт объектов и достигается та простота
там берёшь любую штуку, а она уже умная, для неё не надо ничего писать
и ты можешь тоже такую сделать

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

или, к примеру, сложить два изображения
где такие библиотеки ?
img1 + img2
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB