LINUX.ORG.RU

[?]другое ООП для питона


0

2

Вот я знаю, что для Common Lisp, Racket, R есть различные реализации ООП. А в питоне есть объектная система, чтобы ее можно было использовать вместо/поверх встроенного в витон ООП?

★★

> А в питоне есть объектная система, чтобы ее можно было использовать вместо/поверх встроенного в витон ООП?

раньше был PEAK проект - с мультиметодами, комбинаторами и прочим, но вроде бы уже умер. Так чем тебя python овская реализация ООП не устраивает?

paranonymous
()

Не трожь питон, коли не нравится. Ну или напиши транслятор со своего языка в питон. Или в С, чё уж.

const86 ★★★★★
()
Ответ на: комментарий от const86

а что же тогда? у перла смутные перспективы, у остальных нет необходимых библиотек

bik ★★
() автор топика
Ответ на: комментарий от bik

Я не могу терпеть людей, которые любят отвечать в таком стиле. Ладно если сарказм, но тут человек спросил тебя без шуток.
Это как прийти на лор и попросить идеальный язык, не сказав при этом для чего. Тебе посоветуют лисп(как будто здесь что-то иное могут посоветовать, ага), вот только если тебе нужен был идеальный язык для написания игрушечки для твоего симбиана, то говна наешься.
Это так, пример.

Так вот, давай конкретнее. Что тебя не устраивает?
Как примеры того, что может тебя не устраивать:
Приватных методов нет.
Нет атомов.
Лямбды не такие мощные как в %yourlangname%.
Нет всех новомодных фишек вроде «френд».
Нельзя переопределить стандартные типы.

В общем, давай конкретнее.

tia
()
Ответ на: комментарий от arhibot

зайдите на pypi, потом на common-lisp.net и сравните.

bik ★★
() автор топика
Ответ на: комментарий от bik

Что? Ты не знаешь что такое «троль», глупыш.
Я прошу тебя говорить по существу, ибо твоё «МНЕ НЕ НРАВИТСЯ ООП, ХОЧУ ВСЁ ДРУГОЕ» все здесь воспринимают как типичный приступ голода зелёного тролля.
Других нет. Если что-то не нравится - говори сразу. Если не можешь сказать что тебе не нравится, а просто будешь требовать «ДРУГОЕ ООП», то ответов кроме «толсто» можешь и не ждать.

tia
()

ООП не нужно. Рекомендую учить Go, Haskell и эрланг.

anonymous
()
Ответ на: комментарий от anonymous

Например, нет интерфейсов. Нет абстрактных методов. Нет приватных/публичных методов.
Нет всяких гардов наследования вроде friend(как в мс цепепе).
Вообще нет огромного числа фишек из джавы и вообще ООП «по определению».

Другое дело что многие из этих фишек реализованы как метаклассы, декораторы или стиль именования.
Людей часто пугает просто сам факт того, что это реализовано не на уровне синтаксиса.

tia
()

Официальных - нет, если не считать old-style классы (которые уже deprecated) и new-style классы «разными реализациями», хотя это и было действительно значительное изменение в структуре языка.

Тут следует отметить, что этот человек заигнорил меня за то, что я ему указал на то, что в python результатом выполнения lambda-expression и def-statement являются объекты одного и того же типа. То есть, поставил перед фактом. Получение ответа на вопрос, чем, кроме фактов, на него можно подействовать, я оставлю на совести остальных участников треда.

shylent
()

В CL всемогущую CLOS можно изменить в произвольную сторону, конечно. Но это не значит, что там есть различные реализации ООП. И по факту, реализаций ООП кроме нее для CL нет; кроме единичных случаев, когда ради оптимизации городится ооп на структурах и с одиночной диспетчеризацией.

В питоне такого нет. ОО-система там недостаточно гибкая, ну, по крайней мере, не настолько гибкая, чтобы ее удобно было менять под себя. И, большинство разработчиков на нем довольно инертны в плане принятия каких-либо emerging features, соответственно ...
К тому же, подозреваю, что если реализовать какую-то новую ОО-систему на питоне, она будет тааак тормозить, что ей будет невозможно пользоваться на практике.

Love5an
()
Ответ на: комментарий от tia

>Нет всяких гардов наследования вроде friend(как в мс цепепе).

Да, но когда нет приватных методов - уже и не нужны friend-ы.

Да и вообще без много из этого можно жить.

anonymous
()
Ответ на: комментарий от Love5an

У тебя слишком большое ЧСВ, раз ты себе позволяешь говорить за всех.
И да, обратись ко врачу. Последний раз видел тебя год назад, а ты как был упёртым(скорее упоротым) бараном, которые застрял в развитии, так и остался.

tia
()

Советую посмотреть тогда в сторону Tcl/Tk. Там есть все, что может понадобиться + сильное метта.

Meerkat
()
Ответ на: комментарий от anonymous

>Да, но когда нет приватных методов - уже и не нужны friend-ы.
Да. В том и мысль. Некоторые вещи являются просто лишними. Это как указывать везде вручную тип каждой переменной, хотя ты и так понимаешь какого типа она должна быть и будет. А тесты это ещё и проверят.
А с избавлением от этого, можно избавиться и от других лишних «фишек».

Да и вообще без много из этого можно жить.

Без многих живётся даже легче и проще, а без некоторых не так плохо, как думают.
Я предоставил просто список того, к чему придираются люди, которые действительно хотят изучить пайтон и изучают его. Это список того, что в пайтоне не как в каком-то языке.

tia
()
Ответ на: комментарий от Love5an

Тут весь вопрос состоит в том, что подразумевается под изменением «под себя». Ситуация такова, что с помощью метаклассов можно изменить поведение объектной модели практически на что угодно и некоторые (даже относительно «серьезные» библиотеки) так и делают.

Насчет тормозов. Ну, я понимаю, что вы несколько преувеличиваете, однако зерно правды в этом заявлении есть - насколько мне известно, основной (весь?) функционал текущей объектной модели реализован на C. Если поверх нее реализовать что-то совсем свое на pure python, есть все основания предполагать, что работать это будет медленнее, чем исходная модель. Насколько медленнее? Не знаю, надо проверять, - я не склонен к гаданиям на кофейной гуще.

shylent
()
Ответ на: комментарий от shylent

Я предполагаю, что это будет настолько медленно, насколько я уже сказал - на этом невозможно будет писать что-либо серьезное.

Ситуация такова, что с помощью метаклассов можно изменить поведение объектной модели практически на что угодно и некоторые (даже относительно «серьезные» библиотеки) так и делают.


Ну в python все-равно ОО не настолько гибкое, насколько хотелось бы(хотя, не мне, я вот на CL пишу, когда пишу что мне хотелось бы). Советую посмотреть CLOS с ее комбинаторами методов(кстати, я статью недавно написал, см. ссылку) и метаобъектным протоколом.
http://love5an.livejournal.com/350660.html

Love5an
()

Ёмое, ну вот.
Не успел у tia спросить, чтобы он показал хоть один свой проект больше 500 строчек размером - а он уже заигнорил.
Мне на самом деле интересно. Он ведь тут строит из себя эксперта, так показал бы свой код.

Очень прошу, кто-нибудь, спросите у него за меня!

Love5an
()
Ответ на: комментарий от Love5an

Я предполагаю

В вопросах производительности есть только два неопровержимых аргумента:

  • математическое доказательство (к реальным ситуациям, в общем-то, практически неприменим)
  • профайлинг - т.е., грубо говоря, пишем код, запускаем, смотрим сколько времени занимает выполнение

Остальные такого рода «предположения» смысловой нагрузки, в принципе, никакой не несут и, как вы сами понимаете, всерьез восприняты быть не могут.

Статьи почитаю обязательно, спасибо.

shylent
()
Ответ на: комментарий от shylent

>Остальные такого рода «предположения» смысловой нагрузки, в принципе, никакой не несут и, как вы сами понимаете, всерьез восприняты быть не могут.

Ну не нужно быть гением оптимизации, и даже профайлер в руки брать не слишком обязательно, чтобы понять, что уровень абстракции поверх фактически интерпретируемого языка выльется в невероятные тормоза.

Love5an
()
Ответ на: комментарий от Love5an

>Ну не нужно быть гением оптимизации, и даже профайлер в руки брать не слишком обязательно, чтобы понять, что уровень абстракции поверх фактически интерпретируемого языка выльется в невероятные тормоза.

Смотря какой уровень абстракции, смотря какие задачи.

А вообще да, тормоза будут, но может вполне приемлемые.

anonymous
()
Ответ на: комментарий от tia

Love5an

Ёмое, ну вот. Не успел у tia спросить, чтобы он показал хоть один свой проект больше 500 строчек размером - а он уже заигнорил. Мне на самом деле интересно. Он ведь тут строит из себя эксперта, так показал бы свой код.

Очень прошу, кто-нибудь, спросите у него за меня!

спрашиваю. мне тоже интересно

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

Собственно, я из себя никого не корчу, если что. Я просто высказываю своё мнение на счёт техлогий. Если человек застрял в своём мире лиспа и считает всех, кто против такого образа жизни, «малолетними идиотами», то это исключительно его проблемы.
Что же до моего кода, то у меня не так много кода, который я имею право демонстрировать не получив по шапке.
Сейчас я потихоньку подготавливаю достаточно большой фреймворк(не веб-фреймворк, ибо не только для веба), который заставит либо большое количество людей перейти на пайтон, либо меня на руби. Вот как допилю до состояния, чтобы можно было показать что-то, тогда и покажу.

А пока, если не нравится моё мнение, лучше не читайте что я пишу, чем опускайтесь до оскорблений.

tia
()
Ответ на: комментарий от tia

> Сейчас я потихоньку подготавливаю достаточно большой фреймворк

Покажи sloccount, интересно узнать, что в твоем понимании большой :)

paranonymous
()
Ответ на: комментарий от zJes

ты дурак? не «новое», а то, которого нет в питон по умолчанию. в других языках есть и давно. в питоне - в виде отдельных модулей

bik ★★
() автор топика
Ответ на: комментарий от paranonymous

Большой в моём понимании это в котором будет много функционала. Пока, конечно, бОльшая часть только на бумаге да на майнд-мапе. Работы ещё много, но, в конце концов, я не один это чудо пишу.

tia
()
Ответ на: комментарий от bik

Мальчик, воспитание тебе не помешало бы.
Как отнести синтаксический сахар на уровне декораторов с «другим ООП», о том что ты спрашивал?

zJes ★★
()
Ответ на: комментарий от zJes

а так, что это максимум того, что удалось найти. прекращайте читать между строк.
и traits - это все-таки не декораторы. а остальные - да, забавные игрушки.

bik ★★
() автор топика
Ответ на: комментарий от bik

>http://sourceforge.net/apps/trac/pymultimethods/wiki/GettingStarted

OMG. Зачем в динамическом языке мультиметоды? Чтобы было «как в моём любимом языке <name>»? Ведь синтаксический сахар, основанный на if-ах и isinctance, который, к тому же, портит всю идею утиной типизации.

Это всё напоминает php поверх js (есть такая либа), которая оборачивает функции js-а в привычный пхп-вид, чтобы кодеры не пугались и не читали документацию по другому языку.

anonymous
()
Ответ на: комментарий от zJes

Я думаю человек только учится и не понял ещё что есть ООП и что ему нужно. Главное что он нашёл что хотел, пусть радуется и учится.

tia
()
Ответ на: комментарий от anonymous

> Зачем в динамическом языке мультиметоды?

Извините, а в каком статическом языке есть мультиметоды?

портит всю идею утиной типизации.


Мультиметоды портят утиную типизацию?

archimag ★★★
()
Ответ на: комментарий от bik

С чего ты, «зверёк», на меня с вилами лезешь? Тебе и слова плохого не сказали, а ты так и нарываешься. Тебе помогают, пытаются узнать что ты хочешь, пытаются помочь и ответить на твои вопросы. Ты же всех посылаешь и оскорбляешь.
Не красиво это, не красиво.

tia
()
Ответ на: комментарий от tia

> С чего ты, «зверёк», на меня с вилами лезешь?

Потому что более упертого, недалекого и самоуверенного 20летнего специалиста по всему еще поискать надо.

paranonymous
()
Ответ на: комментарий от paranonymous

И ты туда же. Понимаешь, мой юный друг, ты вот так далеко не уйдёшь. Я, в отличии от тебя, продвигаюсь по карьерной лестнице, изучаю, адекватно обсуждаю технологии. А вот такие как ты, слабоумные люди, которые умеют только оскорблять без причин и флудить на ЛОРе или двачах, так и остаются на уровне 5ого класса.

tia
()
Ответ на: комментарий от tia

Я...изучаю, адекватно обсуждаю

ты, кажется, живёшь в какой-то параллельной вселенной. скажи - кто-нибудь вообще (кроме тебя самого) считает тебя адекватным? в этом треде на эмоции ты сорвался уже в первом комментарии

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.