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

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

09.06.2022, 18:51. Показов 3858. Ответов 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
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
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
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
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
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
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
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
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
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru