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

Ошибка при вызове метода абстрактного класса

05.10.2022, 23:29. Показов 492. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникает ошибка при использовании абстрактного метода, моя задача состояла в том, чтобы сделать абстрактный метод, который дальше будет переопределен, но возникает ошибка: 'Flat' object has no attribute 'every_month'
Пожалуйста, прошу исправьте мой код, чтобы при вызове абстрактного метода в дальнейшем выводило число по задумке
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
    from abc import ABC, abstractmethod
 
 
class City:
    def __init__(self):
        self.name_city = ' '
 
    def get_name(self):
        return self.name_city
 
    def set_name(self, name_city):
        self.name = name_city
 
 
class Building:
    def __init__(self):
        self.name_street = ' '
        self.house_number = 0
        self.square = 0
        self.payment = 0
 
    def get_name_street(self):
        return self.name_city
 
    def get_house_number(self):
        return self.house_number
 
    def get_square(self):
        return self.square
 
    def get_payment(self):
        return self.payment
 
    def set_name_street(self, name_city):
        self.name_city = name_city
 
    def set_house_number(self, house_number):
        self.house_number = house_number
 
    def set_payment(self,payment):
        self.payment = payment
 
class Room(ABC,Building):
    def __init__(self):
        super().__init__()
        self.number=0
        self.square=0
    def get_number(self):
        return self.number
    def get_square(self):
        return self.square
    def set_number(self,number):
        self.number=number
    def set_square(self,square):
        self.set_square=square
    @abstractmethod
    def every_month_payment(self):
        self.every_month=self.payment*self.square
class Flat(Room):
    def add_people(self,name_people):
        self.name_people=name_people
        self.all_people=[]
        self.all_people.append(self.name_people)
    def get_people(self):
        return self.all_people
    def every_month_payment(self):
        return self.every_month * (1 + len(self.all_people) * 0.1)
class Office(Room):
    def set_name_firm(self,name):
        self.name_firm=name
    def get_name_firm(self):
        return self.name_firm
    def set_type(self,type):
        self.type=type
    def get_type(self):
        return self.type
    def every_month_payment(self):
        return super().every_month * 2
names1=Flat()
names1.set_payment(5)
names1.set_square(6)
names1.add_people('IVANOV')
names1.every_month_payment()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2022, 23:29
Ответы с готовыми решениями:

Networkx ошибка при вызове метода add_node
graph.add_node(service, {"type": "Service1"}) При выполнении данного кода появляется следующая ошибка: TypeError: add_node() takes 2...

Почему при вызове метода у экземпляра класса он сначала ищет у экземпляра
Всем привет, после прочтения Лутца про ООП появился такой вопрос почему при вызове метода у экземпляра класса он сначала ищет у экземпляра,...

Ошибка при вызове метода класса в методе другого класса
Господа программисты, возникла такая проблема. При вызове метода класса в методе другого класса выходит такая ошибка " нестандартный...

1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
06.10.2022, 00:17
every_month делаете методом.
В абстрактном методе просто пишете pass

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
from abc import ABC, abstractmethod
 
 
class City:
    def __init__(self):
        self.name_city = ' '
 
    def get_name(self):
        return self.name_city
 
    def set_name(self, name_city):
        self.name = name_city
 
 
class Building:
    def __init__(self):
        self.name_street = ' '
        self.house_number = 0
        self.square = 0
        self.payment = 0
 
    def get_name_street(self):
        return self.name_city
 
    def get_house_number(self):
        return self.house_number
 
    def get_square(self):
        return self.square
         #непонятно, зачем мы делаем геттеры, если потом все равно обращаемся по атрибуту 
 
    def get_payment(self):
        return self.payment
 
    def set_name_street(self, name_city):
        self.name_city = name_city
 
    def set_house_number(self, house_number):
        self.house_number = house_number
 
    def set_payment(self,payment):
        self.payment = payment
 
class Room(ABC,Building):
    def __init__(self):
        super().__init__()
        self.number=0
        self.square=0
        
    def get_number(self):
        return self.number
    
    def get_square(self):
        return self.square
    
    def set_number(self,number):
        self.number=number
        
    def set_square(self,square):
        self.square=square
        #тут была опчетка
        
    def every_month(self):
        return self.payment*self.square
       
    
    @abstractmethod
    def every_month_payment(self):
        pass
    
class Flat(Room):
    def add_people(self,name_people):
        self.name_people=name_people
        self.all_people=[]
        self.all_people.append(self.name_people)
        
    def get_people(self):
        return self.all_people
    
    def every_month_payment(self):
        return self.every_month() * (1 + len(self.all_people) * 0.1)
    
class Office(Room):
    def set_name_firm(self,name):
        self.name_firm=name
        
    def get_name_firm(self):
        return self.name_firm
    
    def set_type(self,type):
        self.type=type
        
    def get_type(self):
        return self.type
    
    def every_month_payment(self):
        return self.every_month() * 2
        #тут непонятно зачем было обращение через родителя
    
names1=Flat()
names1.set_payment(5)
names1.set_square(6)
names1.add_people('IVANOV')
names1.every_month_payment()
Добавлено через 2 минуты
Ну и риторический вопрос: зачем геттеры. если потом все равно
Python
1
self.payment*self.square
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2022, 00:17
Помогаю со студенческими работами здесь

Ошибка при вызове метода класса
После вызова метода getSize() на вызове метода getData() программа крашится. Если вызвать объект сразу инициализированный Array...

Ошибка при вызове метода класса
ошибка возникает когда я вызываю метод ti #include <iostream> using namespace std; class general { protected: int...

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

Ошибка при вызове метода класса-наследника
помогите не знаю что не правильно сделать выходит что в мемо выводит с класса родителя все нормально методом inform() а вот с наследника...

Ошибка при вызове метода класса, при чтении из файла
добрый день, пытаюсь считать данные из и запихнуть их в список в файле у меня вот такие данные a01 b10 А и Б надо запихнуть в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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