Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для GmDio
6 / 5 / 1
Регистрация: 06.06.2022
Сообщений: 68

Наследование классов

09.06.2022, 18:51. Показов 3996. Ответов 37

Студворк — интернет-сервис помощи студентам
Приветствую, дорогие Господа и дамы, прошу проверить выполнение домашнего задания. Заранее спасибо.
Единственное, прошу учитывать, что курс для начинающих, так что больше всего интересует правильность понимания и выполнения.

Задание:

1) Создайте класс для автомобилей, указав у этого класса необходимые свойства (подумайте, какие именно свойства можно указать для всех автомобилей, но обязательно должны быть координаты x и y, в которых находится автомобиль).
2) Создайте метод движения, где через print выведите: «Движение автомобиля в точку x, y», где x и y – это координаты, переданные в методе. Не забудьте обновить x и y в этом методе на новые.
3) Создайте дочерний класс для какой-нибудь конкретной модели автомобиля. Придумайте какое-нибудь свойство, которое характерно именно для этой модели, и добавьте его.
4) Переопределите метод движения. В новом методе должны так же меняться координаты, но при этом в print должно выводиться не «автомобиль», а название конкретного автомобиля, для которого был создан этот класс.
5) Создайте экземпляры обоих классов и проверьте работу их свойств и методов.

Мое выполнение:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Vehicle:
    x = 0
    y = 0
    maxspeed = 0
    weight = 0
 
    def __init__(self, x, y, maxspeed, weight):
        self.x = x
        self.y = y
        self.maxspeed = maxspeed
        self.weight = weight
 
    def movement(self):
        print("Движение автомобиля в точку ", str(self.x), ":", str(self.y), sep="")
 
 
class Model:
    vclass = ""
    manufacturer = ""
    model = ""
 
    def __init__(self, x, y, maxspeed, weight, vclass, manufacturer, model):
        Vehicle.__init__(self, x, y, maxspeed, weight)
        self.vclass = vclass
        self.manufacturer = manufacturer
        self.model = model
 
    def movement(self):
        print("Движение ", str(self.manufacturer), " ", str(self.model) , " в точку ", str(self.x), ":", str(self.y), sep="")
 
 
car = Vehicle(100, 300, 150, 1500)
car.movement()
 
viano = Model(200, 400, 180, 2500, "Business", "Mercedes", "Viano")
viano.movement()
Добавлено через 18 минут
Господа и Дамы*, никакого сексизма.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.06.2022, 18:51
Ответы с готовыми решениями:

Наследование классов
Всем привет. Только начал изучать классы и уже появились проблемы в понимании наследования. Я ищу площадь и длину окружности на...

Наследование классов(Сириус)
Класс разработчик имеет поля: name-имя surname-Фамилия skills-лист языков программирования salary-зарплата Tpel - метод на...

Наследование, полиморфизм, атрибуты классов
Помогите в решении задачи Добавлено через 50 секунд Задание № 1. Наследование Исходя из квиза к предыдущему занятию, у нас уже...

37
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2022, 19:17
Цитата Сообщение от GmDio Посмотреть сообщение
x = 0
    y = 0
    maxspeed = 0
    weight = 0
Цитата Сообщение от GmDio Посмотреть сообщение
vclass = ""
    manufacturer = ""
    model = ""
В данном случае - это все не нужно от слова совсем.

Добавлено через 3 минуты
Цитата Сообщение от GmDio Посмотреть сообщение
Наследование
Так ты ж не унаследовался
0
 Аватар для GmDio
6 / 5 / 1
Регистрация: 06.06.2022
Сообщений: 68
09.06.2022, 19:20  [ТС]
iSmokeJC,
Спасибо, исправил у себя
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2022, 19:20
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Vehicle:
 
    def __init__(self, x, y, maxspeed, weight):
        self.x = x
        self.y = y
        self.maxspeed = maxspeed
        self.weight = weight
 
    def movement(self):
        print(f"Движение автомобиля в точку {self.x}:{self.y}")
 
 
class Model(Vehicle):
 
    def __init__(self, x, y, maxspeed, weight, vclass, manufacturer, model):
        super().__init__(x, y, maxspeed, weight)
        self.vclass = vclass
        self.manufacturer = manufacturer
        self.model = model
 
    def movement(self):
        print(f"Движение {self.manufacturer} {self.model}, в точку {self.x}:{self.y}")
 
 
car = Vehicle(100, 300, 150, 1500)
car.movement()
 
viano = Model(200, 400, 180, 2500, "Business", "Mercedes", "Viano")
viano.movement()


Добавлено через 41 секунду
GmDio, вот именно -
Цитата Сообщение от GmDio Посмотреть сообщение
Создайте дочерний класс
см. мой код, найди отличия
0
 Аватар для GmDio
6 / 5 / 1
Регистрация: 06.06.2022
Сообщений: 68
09.06.2022, 19:32  [ТС]
iSmokeJC,
Так в задании же:
3) Создайте дочерний класс для какой-нибудь конкретной модели автомобиля. Придумайте какое-нибудь свойство, которое характерно именно для этой модели, и добавьте его.

или я что-то не понял.

maxspeed, weight, vclass, manufacturer, model я унаследовал из класса Vehicle, а vclass, manufacturer, model добавил.

Python
1
2
3
4
5
6
7
x = 0
y = 0
maxspeed = 0
weight = 0
vclass = ""
manufacturer = ""
model = ""
в уроке объясняют о необходимости объявлять переменные, хотя это не обязательно, а о наследовании я если честно не понял, буду благодарен более подробному объяснению для чайника.

Python
1
2
3
4
class Model:
...
    def __init__(self, x, y, maxspeed, weight, vclass, manufacturer, model):
        Vehicle.__init__(self, x, y, maxspeed, weight)  # Разве как раз тут я не наследую эти свойства из первого класса?
Добавлено через 4 минуты
Касаемо super(). почитал, что это такое, но в нашем курсе такой функции не было.

Добавлено через 2 минуты
Я сначала как не понял, а потом как понял, спасибо
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2022, 19:32
Т.е. различия не нашел...
У тебя -
Цитата Сообщение от GmDio Посмотреть сообщение
class Model:
У меня -
Цитата Сообщение от iSmokeJC Посмотреть сообщение
class Model(Vehicle):
И не говори, что такого не проходили.
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.06.2022, 19:33
GmDio,
Цитата Сообщение от GmDio Посмотреть сообщение
class Vehicle:
    x = 0
    y = 0
    maxspeed = 0
    weight = 0
для чего у вас эти атрибуты? вы понимаете что это атрибуты класса а не экземпляра? тем более что они не используются. далее
Цитата Сообщение от GmDio Посмотреть сообщение
Движение автомобиля в точку x, y», где x и y – это координаты, переданные в методе. Не забудьте обновить x и y в этом методе на новые.
у вас этого нетю прочитайте про f строки. вам это очень облегчит жизнь. удачи.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Vehicle:
 
    def __init__(self, x, y, maxspeed, weight):
        self.x = x
        self.y = y
        self.maxspeed = maxspeed
        self.weight = weight
 
    def movement(self, x, y):
        self.x = x
        self.y = y
        print(f'Движение автомобиля в точку {self.x} : {self.y}')
        
class Model(Vehicle):
    
    def __init__(self, x, y, maxspeed, weight, manufacturer, model):
        Vehicle.__init__(self, x, y, maxspeed, weight)
        self.manufacturer = manufacturer
        self.model = model
 
    def movement(self, x, y):
        self.x = x
        self.y = y
        print(f'Движение автомобиля {self.manufacturer} в точку {self.x} : {self.y}')
 
 
car = Vehicle(100, 300, 150, 1500)
car.movement(15, 25)
 
viano = Model(200, 400, 180, 2500, "Mercedes", "Viano")
viano.movement(180, 2500)
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2022, 19:34
Цитата Сообщение от GmDio Посмотреть сообщение
но в нашем курсе такой функции не было
На сколько я знаю, можно и как у тебя вызывать конструктор родителя.
super - это по привычке, из других языков (что более наглядно, ибо вызываешь предка, имхо)
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.06.2022, 19:35

Не по теме:

пока исправлял код тут целая дискуссия состоялась

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2022, 19:35

Не по теме:

Семеныч, ты мой код из-под спойлера скопипастил?


0
 Аватар для GmDio
6 / 5 / 1
Регистрация: 06.06.2022
Сообщений: 68
09.06.2022, 19:35  [ТС]
Я понимаю, и абсолютно без претензий, просто стараюсь выполнять задание, как учат, для себя запомню такую конструкцию
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.06.2022, 19:37
iSmokeJC, неаа... ты упустил момент
Цитата Сообщение от GmDio Посмотреть сообщение
Движение автомобиля в точку x, y», где x и y – это координаты, переданные в методе.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2022, 19:39
Semen-Semenich, это уже детали. Я б еще много чего тут поменял. Но вопрос был именно касаемо наследования
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.06.2022, 19:40
iSmokeJC, в принципе согласен.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2022, 19:43
Хотя не, вопрос как раз оценить правильность вцелом. Так что ты уместно подметил косяк.
0
 Аватар для GmDio
6 / 5 / 1
Регистрация: 06.06.2022
Сообщений: 68
09.06.2022, 20:18  [ТС]
Я еще больше запутался, ладно, спасибо вам

Добавлено через 1 минуту
Semen-Semenich,
для чего у вас эти атрибуты? вы понимаете что это атрибуты класса а не экземпляра? тем более что они не используются. далее
Так объясняет преподаватель, говорит, что не обязательно, но надо объявлять, у него это пошло из других языков.

Добавлено через 3 минуты
Посидел, попробовал и понял, спасибо еще раз. Понял, где ошибся, я всего пару дней учусь, иногда не все понятно, но теперь все понятно.

Добавлено через 1 минуту
Только вот дилемма осталась с переменными в классе. Зачем тогда их учат определять, если это не нужно? Потому что так работает в Java и PHP например?

Добавлено через 1 минуту
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
у вас этого нет прочитайте про f строки. вам это очень облегчит жизнь. удачи.
Да, да, просто за 2-3 дня не все успеваю впитывать, что-то приходит со временем и опытом. Буду использовать.
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
09.06.2022, 20:27
ну я с PHP вообще не знаком а с Java так поверхностно и не в курсе что там обязательно а что нет.зачем объявлять то что никому не нужно в данной задаче? задайте этот вопрос преподу.
Цитата Сообщение от GmDio Посмотреть сообщение
Зачем тогда их учат определять, если это не нужно
это бывает нужно но нужно понимать что такое атрибут экземпляра а что класса.
ну вот простой пример. создав атрибут класса мы сможем посчитать сколько экземпляров создано
Python
1
2
3
4
5
6
7
8
class Test:
    coun = 0
    def __init__(self):
        __class__.coun += 1
        
for _ in range(10):
    a = Test()
print(Test.coun)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.06.2022, 08:25
Цитата Сообщение от GmDio Посмотреть сообщение
Потому что так работает в Java и PHP например?
Это работает не так. Если объявлять так же как в Java, например, то вот так -
Python
1
2
3
4
5
6
7
8
9
10
11
class Vehicle:
self.x = 0
self.y = 0
self.maxspeed = 0
self.weight = 0
 
    def __init__(self, x, y, maxspeed, weight):
        self.x = x
        self.y = y
        self.maxspeed = maxspeed
        self.weight = weight
А так, как объявил ты - в Java это static переменные класса.
Если препод так же "по привычке" объявляет поля класса - значит он сам не понимает питоновское ООП.
0
 Аватар для GmDio
6 / 5 / 1
Регистрация: 06.06.2022
Сообщений: 68
10.06.2022, 08:26  [ТС]
iSmokeJC, Ну тут вопросы к Михаилу Русакову
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.06.2022, 08:27
Цитата Сообщение от GmDio Посмотреть сообщение
Зачем тогда их учат определять, если это не нужно?
Если бы был еще один конструктор, без аргументов (или вообще не было бы, что равносильно - питон сам создаст конструктор по умолчанию) - это имело бы смысл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2022, 08:27
Помогаю со студенческими работами здесь

Наследование классов
PITCHES = class Note: def __init__(self, nota, is_long=False): self.nota = nota self.is_long = is_long ...

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

Наследование классов
Вам дано описание наследования классов в следующем формате. имя класса 1 : имя класса 2 имя класса 3 ... имя класса k Это...

Наследование классов
Можно ли узнать предка класса экземпляра? summer_house = class Garden: result = def __init__(self,...

Наследование двух классов
Всем добрый день. Как сделать так, чтобы корректно переносились init'ы двух первых классов в третий? # здесь только цвет class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru