Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 4

'Swimming' object has no attribute 'training_type'

19.03.2023, 10:49. Показов 1330. Ответов 7

Студворк — интернет-сервис помощи студентам
Ошибка выскакивает когда доходит до функции "message": 'Swimming' object has no attribute 'training_type'

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
class InfoMessage:
    """Информационное сообщение о тренировке."""
 
 
    def __init__(self,
                 training_type: str,
                 duration: float,
                 distanse: float,
                 speed: float,
                 calories: float) -> None:
        self.training_type = training_type
        self.duration = duration
        self.distanse = distanse
        self.speed = speed
        self.calories = calories
        
 
    def message (self):
 
        print(f'Тип тренировки: {self.training_type}; Длительность: {self.duration} ч.;' 
              f'Дистанция: {self.distanse} км; Ср. скорость: {self.speed} км/ч;' 
              f'Потрачено ккал: {self.calories}.')
 
 
class Training:
    """Базовый класс тренировки."""
    LEN_STEP = 0.65
    M_IN_KM = 1000    
 
    def __init__(self,
                 action: int,
                 duration: float,
                 weight: float,
                 ) -> None:
        self.action = action
        self.duration = duration
        self.weight = weight
 
 
    def get_distance(self) -> float:
        """Получить дистанцию в км."""
        dist_km = self.action * self.LEN_STEP / self.M_IN_KM
        return dist_km
 
    def get_mean_speed(self) -> float:
        """Получить среднюю скорость движения."""
        mean_speed = self.get_distance() / self.duration
        return mean_speed
 
    def get_spent_calories(self) -> float:
        """Получить количество затраченных калорий."""
        pass
 
    def show_training_info(self) -> InfoMessage:
        """Вернуть информационное сообщение о выполненной тренировке."""
 
        return InfoMessage.message(self)
 
 
class Running(Training):
    """Тренировка: бег."""
    CALORIES_MEAN_SPEED_MULTIPLIER = 18
    CALORIES_MEAN_SPEED_SHIFT = 1.79
 
    def __init__ (self, action, duration, weight):
        super().__init__(action, duration, weight)
    
    def get_spent_calories(self) -> float:
        run_calories = (self.CALORIES_MEAN_SPEED_MULTIPLIER * self.get_mean_speed()
                        + self.CALORIES_MEAN_SPEED_SHIFT)* self.weight / self.M_IN_KM * (self.duration)
        return run_calories
 
 
 
class SportsWalking(Training):
    """Тренировка: спортивная ходьба."""
    K_1 = 0.035
    K_2 = 0.029
    LEN_STEP_POOL = 1.1
 
 
    def __init__(self, action, duration, weight, hight):
        super().__init__(action, duration, weight)
        self.hight = hight
 
    def get_spent_calories(self) -> float:
        result = ((self.K_1 * self.weight + ((self.get_mean_speed() * (round(self.M_IN_KM/3600),3))**2
                / self.hight) * self.K_2 * self.weight) * (self.duration*60))
        return result
 
 
class Swimming(Training):
    """Тренировка: плавание."""
    LEN_STEP_POOL = 1.1
    
    def __init__ (self, action, duration, weight, length_pool, count_pool):
        super().__init__(action, duration, weight)
        self.length_pool = length_pool
        self.count_pool = count_pool
 
 
    def mean_speed(self) -> float:
        result = self.length_pool*self.count_pool / self.M_IN_KM /self.duration
        return result
    def get_spent_calories(self) -> float:
        result = (self.get_mean_speed() + self.LEN_STEP_POOL) * 2 * self.weight * self.duration
        return result
 
 
def read_package(workout_type: str, data: list) -> Training:
    """Прочитать данные полученные от датчиков."""
    dist_data = {
        'RUN': Running,
        'SWM': Swimming,
        'WLK': SportsWalking
    }
    return dist_data[workout_type](*data)
 
   
 
def main(training: Training) -> None:
    """Главная функция."""
    info = training.show_training_info()
    return (info.message())
 
 
if __name__ == '__main__':
    packages = [
        ('SWM', [720, 1, 80, 25, 40]),
        ('RUN', [15000, 1, 75]),
        ('WLK', [9000, 1, 75, 180]),
    ]
 
    for workout_type, data in packages:
        training = read_package(workout_type, data)
        main(training)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2023, 10:49
Ответы с готовыми решениями:

Attribute error 'tuple' object has no attribute 'employee_id'
Задача у меня такая собрать данные из базы и перевести в формат json. Использую Oracle. Если написать номера столбцов вручную, то все...

Object has no attribute
Добрый день,пересаживаюсь с с#, вообще не вдупляю на что ругается. Объясните import sys import time import os from PyQt5 import...

Object has no attribute 'exec_'
Возникает ошибка (единственная на данный момент): Traceback (most recent call last): File...

7
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
19.03.2023, 10:53
Цитата Сообщение от EvReutov23 Посмотреть сообщение
'Swimming' object has no attribute 'training_type'
как ты это перевел? о чем тебе говорит эта фраза? неужели никаких предположений?

Добавлено через 2 минуты
Цитата Сообщение от EvReutov23 Посмотреть сообщение
def show_training_info(self) -> InfoMessage:
        """Вернуть информационное сообщение о выполненной тренировке."""
return InfoMessage.message(self)
это тебя кто-то обманул что так нужно делать. можно то можно, но сможешь ли ты объяснить что тут произошло и почему?
0
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 4
19.03.2023, 10:55  [ТС]
перевод
Swimming не является атрибутом training_type
Предположение:
Swimming - это класс, а training_type ждет строковое значение
Если правильно понял
Дальше у меня ступор, не понимаю что с этим делать
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
19.03.2023, 11:00
Цитата Сообщение от EvReutov23 Посмотреть сообщение
перевод
Swimming не является атрибутом training_type
это какой переводчик так переводит? я всегда удивляюсь как вы гуглите и как переводите, я пошел в гугл переводчик и вставил, получаю "Объект «Плавание» не имеет атрибута «training_type»". Теперь понятно?
у плавания нет такого атрибута, никто ничего не ждет, никаких строковых значений. Выкинь свой переводчик и начни пользооваться интернетом.

Ты в класс ИнфоМессадж по непонятной архитектурной логике передаешь объект Свимминг(который наследник Трейнинг), а в методе ожидается ряд атрибутов, в том числе трейнинг тайп. Вот прямо так и написано:
Цитата Сообщение от EvReutov23 Посмотреть сообщение
def message (self):
print(f'Тип тренировки: {self.training_type}; Длительность: {self.duration} ч.;'
              f'Дистанция: {self.distanse} км; Ср. скорость: {self.speed} км/ч;'
              f'Потрачено ккал: {self.calories}.')
Внимание, вопрос - в классе Трейнинг или в классе Свимминг есть атрибут трейнинг тайп?
0
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 4
19.03.2023, 11:03  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
это тебя кто-то обманул что так нужно делать. можно то можно, но сможешь ли ты объяснить что тут произошло и почему?
Полагаю что идет ссылка на метод в классе InfoMassage.
Если так ставиться вопрос, то видимо я не прав.
В таком случае что должно происходить в данной функции?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
19.03.2023, 11:06
Цитата Сообщение от EvReutov23 Посмотреть сообщение
Полагаю что идет ссылка на метод в классе InfoMassage.
скорее ты в метод класса ИнфоМесседж, не создавая его объект, через ссылку селф передаешь объект который туда не подходит по параметрам. Нарушив принципы ООП

Добавлено через 1 минуту
Цитата Сообщение от EvReutov23 Посмотреть сообщение
В таком случае что должно происходить в данной функции?
я же не знаю твоей логики. Если ты хотел с помощью ИнфоМесседж выдвать сообщения от трейнингов, то надо как и принято создать объект, передав все нужные атрибуты и вызвать его метод
0
0 / 0 / 0
Регистрация: 19.03.2023
Сообщений: 4
19.03.2023, 11:32  [ТС]
Все атрибуты приходят из read_package. Она корректно написана?
Я же не могу этот метод вставить в объект InfoMassage? Нужно передавать конкретными атрибутами, а не пакетом в виде функции или листа
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
19.03.2023, 12:52
не понимаю о чем ты. Создаем объект, передаем ему в инит все что требуется, вызываем его метод.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2023, 12:52
Помогаю со студенческими работами здесь

'bool' object has no attribute 'ui'
У меня проблема в том, что при запуске программы и нажатии на соответствующую кнопку, у меня вылезает ошибка, что якобы булевый объект не...

Ошибка object has no attribute 'get'
#бегущая строка from tkinter import * def exit(): #функция выхода sys.exit() def put(): a = text.get() ...

'QuerySet' object has no attribute 'id'
делаю редирект на страницу с созданной статьей после сабмита формы: моель: class Article(models.Model): title =...

'NoneType' object has no attribute
Пытаюсь добавить товар в корзину. Хочу начать с простого. Есть 3 модели: Product, CartItem, Cart. Для начала хочу взять первую корзину...

'str' object has no attribute
Здравствуйте. Возникла проблема с вызовом функции. Ошибка такая: 'str' object has no attribute 'getInfoPasient'. Пробовала переименовывать,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru