Ошибка TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType' при сложении результатов работы методов класса
class Procedure:
def __init__(self, procedure, data, doctor, price):
self.__procedure = procedure
self.__data = data
self.__doctor = doctor
self.__price = price
# модификаторы
def set_procedure(self, procedure):
self.__procedure = procedure
def pay(self, bal):
self.__price += bal
def set_data(self, data):
self.__data = data
def set_price(self, price):
self.__price = price
def set_doctor(self, doctor):
self.__doctor = doctor
# получатели
def get_procedure(self):
return f'Название процедуры:\n{self.__procedure}'
def get_data(self):
return f'Дата: {self.__data}'
def get_doctor(self):
return f'Врач: {self.__doctor}'
def get_price(self):
return self.__price
def main():
treatment1 = proc1()
treatment2 = proc2()
treatment3 = proc3()
print()
print(f'Процедура № 1 \n'
f'{treatment1.get_procedure()}\n' \
f'{treatment1.get_data()}\n' \
f'{treatment1.get_doctor()}\n' \
f'Стоимость: {treatment1.get_price()}\n')
print(f'Процедура № 2\n'
f'{treatment2.get_procedure()}\n' \
f'{treatment2.get_data()}\n' \
f'{treatment2.get_doctor()}\n' \
f'Стоимость: {treatment2.get_price()}\n')
print(f'Процедура №3\n'
f'{treatment3.get_procedure()}\n' \
f'{treatment3.get_data()}\n' \
f'{treatment3.get_doctor()}\n' \
f'Стоимость: {treatment3.get_price()}\n')
t1 = treatment1.pay(treatment1.get_price())
t2 = treatment2.pay(treatment2.get_price())
t3 = treatment3.pay(treatment3.get_price())
summ = t1 + t2 + t3
print(summ)
# процедуры
def proc1():
proc = 'ferst'
data = 'today'
doctor = 'jon'
price = 200
in_procedure = Procedure(proc, data, doctor, price)
return in_procedure
def proc2():
proc = 'second'
data = 'today'
doctor = 'Li'
price = 300
in_procedure = Procedure(proc, data, doctor, price)
return in_procedure
def proc3():
proc = 'three'
data = 'today'
doctor = 'Chan'
price = 150
in_procedure = Procedure(proc, data, doctor, price)
return in_procedure
main()
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
t1 = treatment1.pay(treatment1.get_price())
t2 = treatment2.pay(treatment2.get_price())
t3 = treatment3.pay(treatment3.get_price())
summ = t1 + t2 + t3
print(summ)
У вас метод Procedure.pay ничего не возвращает, поэтому во всех трёх переменных оказывается None. Мне кажется, тут какая-то ошибка у вас в логике, не должна процедура pay обнулять в результате своей работы стоимость процедуры, а у вас именно это происходит. Платить должен пациент, а не процедура, на мой взгляд. А тут код должен быть такой:
t1 = treatment1.get_price()
t2 = treatment2.get_price()
t3 = treatment3.get_price()
summ = t1 + t2 + t3
print(summ)
Вывод:
Процедура № 1
Название процедуры:
ferst
Дата: today
Врач: jon
Стоимость: 200
Процедура № 2
Название процедуры:
second
Дата: today
Врач: Li
Стоимость: 300
Процедура №3
Название процедуры:
three
Дата: today
Врач: Chan
Стоимость: 150
650