Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Этот "дребезжащий мусор" просто надоел. Код становится нечитаемый, потому что не видно сути. Есть какой- то способ писать обращение к членам класса напрямую без self (и другого заменителя)?
28 ноя 18, 13:26    [21747274]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3546
Нет
28 ноя 18, 13:37    [21747294]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 330
AlekseySQL,

А можно некий пример на неком псевдопитоне, как вы себе это представляете?
28 ноя 18, 16:40    [21747628]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3546
Лысый дядька,

Не стоит обращать на него внимания. ТС любит по каждой мелочи бежать и жаловаться на форум на тяжёлую жизнь.
28 ноя 18, 17:13    [21747673]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Лысый дядька
AlekseySQL,

А можно некий пример на неком псевдопитоне, как вы себе это представляете?


Возьмите любой код класса на С++ / Java: там при обращение к членам / методам внутри класса не надо дополнительных танцев с бубном. Код получается элегантным, потому что не содержит лишних ничего- незначащих синтаксических элементов.
28 ноя 18, 18:14    [21747756]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 330
AlekseySQL
Возьмите любой код класса на С++ / Java: там при обращение к членам / методам внутри класса не надо дополнительных танцев с бубном.

С интересом посмотрю на Java-код с переменными и функциями в глобальном пространстве имен. Можете показать?
28 ноя 18, 19:08    [21747813]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3546
AlekseySQL
Лысый дядька
AlekseySQL,

А можно некий пример на неком псевдопитоне, как вы себе это представляете?


Возьмите любой код класса на С++ / Java: там при обращение к членам / методам внутри класса не надо дополнительных танцев с бубном. Код получается элегантным, потому что не содержит лишних ничего- незначащих синтаксических элементов.

Только с питоном такое не пройдёт.
Вот представь себе, что должен делать питон в таком случае в отсутствие обязательного self?
class A:
    def foo():
        var = "test"

obj = A()
obj.foo()

Должен ли у инстанса obj появиться новый аттрибут var со значением "test" или же ты просто в скопе метода foo() объявляешь переменную?
Точно так же в Python'е нет ADL, как в C++ и прочих implicit приблуд, а всё делается явным образом:
def bar(x):
    print("Hello")

class A:
    def bar(self):
        print("Baz")
        
    def foo(self):
        bar(self)

obj = A()
obj.foo()

В C++ подобный код бы вывел "Baz" а не "Hello", как в питоне.

Тебе когда-нибудь надоест жаловаться, что в сутках 24 часа, а не 36, и что на севере холодно, в то время как на юге тепло?
Не нравится питон, выбери любой другой язык. Вон, например, вокруг Kotlin'а сейчас сколько хайпа.
Или напиши уже свой идеальный и душевный язык программирования.
28 ноя 18, 19:20    [21747829]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
NekZ
Тебе когда-нибудь надоест жаловаться, что в сутках 24 часа, а не 36, и что на севере холодно, в то время как на юге тепло?
Не нравится питон, выбери любой другой язык. Вон, например, вокруг Kotlin'а сейчас сколько хайпа.
Или напиши уже свой идеальный и душевный язык программирования.


Python всего- навсего язык программирования. Поэтому я отношусь к нему утилитарно. Вот, например, простейший код, над которым надо помедитировать, чтобы понять что он делает:
self.a = self.b + self.c/self.d


Если хочется динамически добавлять члены объекта, то для этих более редких случаев как раз можно использовать self (что будет даже удобно при чтении, поскольку выделит эту часть кода), а области видимости разрешать также, как это сделано в функциях (чтобы было единообразие).
29 ноя 18, 07:47    [21748014]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 330
AlekseySQL
Вот, например, простейший код, над которым надо помедитировать


Мне кажется ты в жизни написал не более пары десятков строк кода
29 ноя 18, 08:44    [21748032]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Лысый дядька
AlekseySQL
Вот, например, простейший код, над которым надо помедитировать


Мне кажется ты в жизни написал не более пары десятков строк кода


Мы можем, конечно, заниматься взаимными оскорблениями и упреками. Но это неэффективный путь.

По сути вопроса: приведенный мной код для его понимания нужно ЧИТАТЬ, его невозможно ухватить бросив один беглый взгляд. А код должен быть ПРОСМАТРИВАЕМЫМ, только тогда программировать становится легко и размер проекта легко растет количественно. Наоборот, если код написан сложно, то на определенном размере проекта он просто перестает расти: программист ходит на работу, ужасно устает, но по факту выхлоп практически нулевой.

В свое время я познакомился с потрясающей книгой Роберта Мартина "Чистый код", которая не мной признана бестселлером. Там автор приводит такую аналогию: код должен быть похож на газетную статью. Согласитесь, что ушлые журналисты составляют газетные статьи так, что их можно просто просматривать, в целом понимая суть изложенного. Собственно только легкость и чистота отличает код сеньора (а джун сколько не тужится, у него все равно получаются ребусы).
29 ноя 18, 10:05    [21748107]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13435
Лысый дядька
AlekseySQL
Возьмите любой код класса на С++ / Java: там при обращение к членам / методам внутри класса не надо дополнительных танцев с бубном.

С интересом посмотрю на Java-код с переменными и функциями в глобальном пространстве имен. Можете показать?


К сообщению приложен файл. Размер - 68Kb
29 ноя 18, 11:57    [21748338]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
А есть в языке какие- нибудь макро- подстановки, типа define в С++?

Тогда бы я в своем коде зарезервировал какой- нибудь символ и использовало его исключительно в качестве self.
30 ноя 18, 14:04    [21749967]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3546
AlekseySQL
А есть в языке какие- нибудь макро- подстановки, типа define в С++?

Тогда бы я в своем коде зарезервировал какой- нибудь символ и использовало его исключительно в качестве self.

Опять ты про C++. "В чужой монастырь со своим уставом не ходят".
Во-первых, "self" не является ключевым словом. Ты можешь вместо него писать this или что-нибудь ещё.
Во-вторых, если уж так сильно хочется препроцессинга, можешь попытать удачу с Jinja2 (это было бы забавно наблюдать со стороны).
30 ноя 18, 15:33    [21750181]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 330
AlekseySQL,

Ты не ответил, на вопрос, как бы ты видел программу на питоне, без self. Плюс к этому тебе нужны тебе еще и макросы на питоне. Повторю вопрос - покажи программу на питоне с классами без self и плюс еще с макросами. Как она должна выглядеть? Ответ "как Джава" не принимается, ибо Джава уже есть и другой не нужно. Покажи промер кода.
30 ноя 18, 16:18    [21750303]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Лысый дядька
AlekseySQL,

Ты не ответил, на вопрос, как бы ты видел программу на питоне, без self. Плюс к этому тебе нужны тебе еще и макросы на питоне. Повторю вопрос - покажи программу на питоне с классами без self и плюс еще с макросами. Как она должна выглядеть? Ответ "как Джава" не принимается, ибо Джава уже есть и другой не нужно. Покажи промер кода.


Я уже писал решение: динамическое добавление атрибутов делать с помощью self, а область видимости разрешать как у функций.
30 ноя 18, 16:43    [21750389]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 330
AlekseySQL,
ну от вас же ждут пример программы, а не словесное ее описание. Давайте пример.
30 ноя 18, 17:35    [21750497]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Лысый дядька
AlekseySQL,
ну от вас же ждут пример программы, а не словесное ее описание. Давайте пример.


Если бы я знал как это сделать, то не задавал этот вопрос в топике. Может например, существуют какие- то классы, которые позволяют это сделать(например, недавно в языке появились классы данных).
30 ноя 18, 17:38    [21750502]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 330
AlekseySQL,

Так от вас ждут пример на выдуманном питоне, таком как вы его видите для себя. Напишите программу на несуществующем сейчас питонге, так как он бы вас устраивал.
30 ноя 18, 17:42    [21750519]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13435
Лысый дядька
AlekseySQL,

Так от вас ждут пример на выдуманном питоне, таком как вы его видите для себя. Напишите программу на несуществующем сейчас питонге, так как он бы вас устраивал.


Да не проблема это записать как на яве, только работать не будет.
30 ноя 18, 21:42    [21750792]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
А может есть IDE, которые позволяют настроить препроцессинг? Ведь по логике сделать банальные замены в тексовом файле для IDE не проблема...
1 дек 18, 08:42    [21750902]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Чтобы было понятно, что вопрос не высосан из пальца прилагаю скриншот своего реального кода, на котором self торчит отовсюду. Да и дело не в доле, занимаемой self, а в том, что я физически чувствую усталость при работе с подобным кодом.

К сообщению приложен файл. Размер - 111Kb
1 дек 18, 08:50    [21750903]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3546
AlekseySQL,

Когда пишешь отборный говнокод, то, и правда, виноват только язык, а не ты сам.
1 дек 18, 11:07    [21750940]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
NekZ, это код изменения состояния загрузчика внешних данных в зависимости от ответа сервера (варьируется интервал выполнения запросов). Действительно может показаться, что функция не разделена на более мелкие логические составляющие. Изначально я пошел по второму пути и создал несколько маленьких функций, в следствии чего пропало понимание последовательности в цепи состояний, поскольку разрозненные функции не давали общую картину.

Причем деление на более мелкие функции не снимает необходимости везде писать тот же самый self. Его также неприлично много, и он также "загораживает" реальный код.
1 дек 18, 11:18    [21750943]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 330
Hett
Да не проблема это записать как на яве, только работать не будет.

Разумеется, не будет. Вот как только ТС попытается написать программу на питоне как на яве, он немедленно поймет, зачем там нужен self. Пока он только тупит и пускает пузыри, как обосравшаяся девочка из младшей группы детсада, о чем с ним вообще говорить?
1 дек 18, 17:21    [21751056]     Ответить | Цитировать Сообщить модератору
 Re: В Python можно как-то в классах не писать self ?  [new]
vkle
Member

Откуда: Самара
Сообщений: 14520
Ну не нравится синтаксис этого языка, так почему бы не писать на том, который нравится? Какой-то весьма странный вопрос в условиях, когда языков программирования как грязи...
1 дек 18, 17:27    [21751057]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / PHP, Perl, Python Ответить