|
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
|
|
Объясните значение метода _init_ и параметр self07.01.2019, 15:40. Показов 22922. Ответов 24
Метки нет (Все метки)
0
|
|
| 07.01.2019, 15:40 | |
|
Ответы с готовыми решениями:
24
Что означает первый параметр метода этого класса? И почему при вызове метода передаётся один параметр(второй)? Объясните понятие "параметр" функции/метода Объясните значение метода SetFIO |
|
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
|
|
| 07.01.2019, 16:22 | |
|
метод __init__ вызывается при создании объекта класса, self для обращения в переменным и методам объекта
0
|
|
|
|
||
| 07.01.2019, 16:33 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
|
|
| 07.01.2019, 16:51 [ТС] | |
|
0
|
|
|
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,232
|
||
| 07.01.2019, 16:58 | ||
|
1
|
||
|
|
||
| 07.01.2019, 17:38 | ||
|
1
|
||
| 07.01.2019, 18:03 | ||
|
Не по теме:
Однако имеется один метод перегрузки оператора, который можно встретить практически в любом классе: метод __init__, который известен как конструктор и используется для инициализации состояния объектов. Методу __init__ следует уделить особое внимание, потому что он, наряду с аргументом self, является одним из ключей к пониманию ООП в языке Python. И во всех языках инструкции конструктора выполняются после создания объекта. Хотя бы потому что являются переопределением конструктора самого класса Object.
0
|
||
|
|
|
| 07.01.2019, 18:22 | |
|
Лутц упрощает, дабы не вводить в ступор новичков. Никто не запрещает называть __init__ конструктором. Но изучив python чуть глубже вы узнает о существовании метода __new__, который и создает экземпляр.
Вы неверно объяснили суть метода __init__ - даже с учетом упрощенной подачи у Лутца - и я поправил.
1
|
|
|
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
|
||||||
| 07.01.2019, 20:20 [ТС] | ||||||
|
у меня еще один вопрос назрел, что такое экземпляр? Я так поняла это переменная которой присваивается класс
0
|
||||||
|
|
||
| 07.01.2019, 21:19 | ||
|
Значением переменной, разумеется, может быть и экземпляр класса. Но переменная != экземпляр. Если копнуть чуть глубже - переменная это еще и ящик для хранения, потому что связана с указателем на некоторую область памяти. И хранить она может что угодно. А экземпляр какого-то класса это объект сконструированный этим классом и обладающий определенными свойствами\атрибутами.
1
|
||
|
|
|||
| 07.01.2019, 21:34 | |||
|
Инициализация то же как бы часть создания/конструирования. Для большинства языков например С/С++ обычно выделяют "выделение памяти" и "инициализацию" (этой самой памяти значениями") . Но с учетом того что память может выделяться (и освобождать) по разному и может быть "вложенность" объектов одного в другой, то все не так просто. Добавлено через 5 минут
1
|
|||
|
0 / 0 / 0
Регистрация: 28.12.2018
Сообщений: 35
|
||||||
| 07.01.2019, 22:01 [ТС] | ||||||
|
Avazart, можете проверить правильность написания кода? Программа работает, но интересно я написала как положено или он на костылях?
Задание: Ресторан: создайте класс с именем Restaurant. Метод __init__() класса Restaurant должен содержать два атрибута: restaurant_name и cuisine_type. Создайте метод describe_ restaurant(), который выводит два атрибута, и метод open_restaurant(), который выводит сообщение о том, что ресторан открыт.
0
|
||||||
|
|
||||||||||||
| 07.01.2019, 22:54 | ||||||||||||
|
Да вроде все верно если делать поправку что это очередное глупое учебное задание.
Но в чем проблема, каков смысл этого класса? Как его предполагается использовать? Это вопросы к больше к составителю задания... Зная этом можно сказать точно правильно или нет. А так это это бессмысленная трата времени. Добавлено через 4 минуты
Использование print внутри класса плохой стиль, это делает класс монолитным и лишает его гибкости. Что к примеру если мы захотим выводить его не в консоль, а к примеру в файл?
0
|
||||||||||||
| 08.01.2019, 00:39 | ||||||
|
Alycia, Что бы понять ООП (объектно ориентированное программирование) нужно обратится к реальности, а точнее к реальному мышлению человека. ООП просто моделирует часть реального мышления человека. Вы ведь в школе изучали виды животных, их классы и подклассы. Например класс парнокопытных и его подкласс коза. Когда мы говорим о козе абстрактно, то оперируем понятием коза принимая во внимание ее свойства, которые присущи всем козам, (рога, копыта, шерсть, цвет, 2 глаза, 4 ноги и так далее), а так же что может делать коза ( в питоне это методы). Например давать молоко, давать шерсть, питаться травой и т.д. Так вот такое обобщенное понятие козы соответствует self в питоне. Класс в питоне может описать класс коз в реальности. Конкретные козы в реальности это экземпляры класса class козы() в питоне. А self для класса "козы" в питоне, соответствует обобщенному понятию козы в мышлении человека.
С помощью инструкции __init__ мы описываем какие свойства у любого экземпляра класса должны быть, И так как это для всех экземпляров класса, то мы эти свойства (атрибуты) присваиваем обобщенному объекту self. То есть те свойства (атрибуты), которыми обладает обобщенный объект класса "козы" self, обладают все конкретные экземпляры этого класса, то есть конкретные козы. Но конкретным козам (экземплярам) могут принадлежать и свои индивидуальные свойства (атрибуты), например пятно на боку, которые не принадлежат другим козам и потому отсутствую у обобщенной козы ( в питоне обозначаемой self). Написал много, но что не понятно, то задавайте вопросы. Добавлено через 6 минут Но сразу замечу, что классы в питоне не строго ответствуют классическим классам в мышлении человека в плане наследования и общих для класса свойств. Но пока не забивайте себе этим голову, эту особенность поймете потом, при углубленном изучении классов. Добавлено через 50 минут Добавлю немного про про объекты в питоне и про переменные в нем. Объекты в питоне, это выделенная область в памяти компьютера содержащая определенную информацию, как то числа , экземпляры классов с их атрибутами , словари, списки , строки, файлы и так далее. Для этих объектов обычно существуют переменные, которые содержат ссылки на эти объекты и ничего более. В этом отличие питон от других языков. В других языках переменная является именем конкретной области в памяти где находится информация, и поэтому в тех языках переменная требует объявления с указанием типа. В питоне все по другому. переменная не привязана жестко с областью памяти а только содержит ссылку на некоторый объект в области памяти. Мы можем поменять ссылку в переменной, что бы она ссылалась на другой объект любого типа. Именно поэтому для переменных в питоне не присваивается изначально тип. Любая переменная может перенаправляться ссылкой на любой объект любого типа. Классы в питоне, это объекты. Имя класса, это переменная содержащая ссылку на объект класса в памяти компьютера. Экземпляр класса, это тоже объект. Кстати такая тонкость.
Создание объекта экземпляра происходит когда мы обращаемся через переменную Super к объекту класса применяя круглые скобки. Запись Super('spam') создает экземпляр этого класса (объект в памяти) с атрибутом data и его значением 'spam'. Но при этом нет переменной, которая бы на него ссылалась. В некоторых случаях этот прием используется, когда в выражение подставляется не переменная ссылающаяся на экземпляр, а сам экземпляр без имени. Для того же что бы получить переменную со ссылкой на этот объект экземпляра, необходима следующая запись. x = Super('spam'). Тогда переменная x будет иметь ссылку на этот экземпляр и через нее мы можем к нему обращаться. Пока все. Какие будут еще вопросы, обращайтесь.
4
|
||||||
|
|
||
| 08.01.2019, 00:42 | ||
|
И советовал бы относиться к ООП как к инструменту, не более без всякой метафизической ерунды. Это лишь инструмент позволяющий выразить свои мысли в коде, не более. И этот инструмент как и любой другой можно использовать не правильно, вместо упрощения кода - усложнять его. Или вообще просто писать бессмысленный код как Ваше учебное задание.
1
|
||
| 08.01.2019, 06:07 | ||||||||||||||||
|
Avazart, Avazart, А я бы Вам советовал не переоценивать себя и не считать себя умнее других. Я знаю, что могу ошибаться, а вот Вы похоже про себя такого не думаете и готовы с ходу начать учить других. Удачи Вам в самоутверждении. Поучитесь, как должен себя вести истинный профессионал у Garry Galler. Извините , если был грубоват.
Добавлено через 1 час 44 минуты Alycia, По поводу Вашего примера
В задании Вас просят только создать класс с заданной структурой. Проверку созданного класса Вы видимо придумали сами. Я бы проверку сделал так
Our restaurant is name Claude Monet Our cuisin is French Claude Monet Restaurant open from 9:00 am Добавлено через 21 минуту Кстати по поводу использования методов перегрузки __str__ и __repr__, использование их на начальной стадии обучения излишне. В свое время когда дойдете до их изучения , то тогда и освоите зачем и как их использовать. У М.Лутца целая глава посвящена изучению методов перегрузки операторов.
0
|
||||||||||||||||
|
|
|||||
| 08.01.2019, 11:17 | |||||
прежде чем что либо озвучивать...Добавлено через 9 минут По Вашему лучше делать неправильно и потом переучиваться? Добавлено через 3 минуты
1
|
|||||
| 08.01.2019, 16:41 | |||
|
Avazart, Не хотел отвечать, но не удержался
Если следовать Вашим советам то учащихся в первом классе сразу нужно учить высшей математике, что бы по Вашему все было правильно, с учетом самых сложных задач математики? Сомневаюсь, что кто то из них после этого что либо освоит и станет профессиональным математиком. Для того, что бы учить других, мало быть профессионалом в своей области, нужно еще быть профессионалом в преподавательской деятельности. Все больше в дискуссию с Вами не вступаю, Вы все равно не понимаете о чем я говорю.
0
|
|||
|
|
|||
| 08.01.2019, 20:42 | |||
|
Иначе получите бездарей думающих что "на ноль делить нельзя".
0
|
|||
|
0 / 0 / 1
Регистрация: 19.09.2016
Сообщений: 11
|
|||||||
| 13.02.2020, 04:06 | |||||||
0
|
|||||||
| 13.02.2020, 04:06 | |
|
Помогаю со студенческими работами здесь
20
при формировании отчёта в режиме 1 с выявляется ошибка метода контекста.Недопустимое значение параметра (параметр №1) Передача метода в метод, метода как параметр
Ошибка при загрузке Ubuntu 14.04 LTS: run-init: /sbin/init: Permission denied Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|