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

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

09.06.2022, 18:51. Показов 3871. Ответов 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
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
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
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
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
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
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
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
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
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru