170 похожих чатов

Всем привет. Вот объясните мне, зачем в гайдах по Python

OOP для начинающих сразу рассказывают про геморрой с
def init(self), когда можно все упростить. Я безо всяких init и self могу подключаться к переменным классов и менять их значение. И зачем ставить скобки при создании объекта класса, если их можно не ставить? Просто блин, разницы не вижу

14 ответов

6 просмотров
Nickolay-Volevach Автор вопроса

в моем случае у меня экземпляр класса или объект класса?

Nickolay Volevach
в моем случае у меня экземпляр класса или объект к...

в данном случае вы пользуетесь аттрибутами класса, а не экземпляра

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

Класс - это некая абстрактная сущность, чертёж, если хотите, описывающий определённый тип объектов. Атрибуты, прописываемые непосредственно в классе, при создании объектов будут присущи всем объектам класса без исключения в том виде, в котором они указаны в классе. Метод инициализации объекта класса позволяет определить некоторый набор атрибутов, который может не быть одинаковым для всех объктов класса, а также сразу же задать этим атрибутам значения при создании объекта. Кроме того, иногда в методе инициализации вызываются какие-то методы, которые должны выполниться при создании объекта класса.

Елена Максимова
Класс - это некая абстрактная сущность, чертёж, ес...

если дополнить это сообщение конкретным примером, было бы здорово. А так почти как в книжке

Nickolay-Volevach Автор вопроса

Извините, особо нет времени накидывать примеры. Их в целом достачно в тех же книжках) Просто важно понимать, что атрибуты класса и атрибуты объекта класса это разные вещи. Кстати, атрибуты объекта класса можно спокойно добавлять после создания объекта (если только вы не используете slots в своём классе), даже если их не было в методе инициализации.

Елена Максимова
Извините, особо нет времени накидывать примеры. Их...

После слова 'кстати' как будто китайскую грамоту прочел 😀 Нужно будет ООП куда-нибудь применить, чтобы понять. Спасибо за пищу для размышлений

И друг мой грузовик 🚛
После слова 'кстати' как будто китайскую грамоту п...

Вот, посмотрите на эти скрины. В методе init изначально нет параметра age. Однако мы спокойно добавили его в конкретный объект. И теперь в объекте 1 есть age, а в объекте 2 - нет. Кроме того, при создании объекта мы каждый раз увеличиваем на 1 значение атрибута класса. И это значение одинаково для всех объектов класса. Если бы мы обращались при увеличении к атрибуту класса через селф, результат был бы другим, к слову.

теперь почти понятно. Но чтобы пришло окончательное понимание, нужно испытать на собственной шкуре. Спасибо 👍🏿

И друг мой грузовик 🚛
теперь почти понятно. Но чтобы пришло окончательно...

Да не за что особо. ООП довольно трудно понять без практики. А некоторые теоретически возможные в ООП вещи можно вообще никогда не повстречать))

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта