Использование метода как параметра другого метода
Уважаемые коллеги, нужна ваша помощь. Я хочу при помощи метода Limits, выставлять лимит. Параметром метода я использую метод Total_amount, но у меня выводится значение x=1000, хотя мне необходимо чтобы выводилось значение 1017 - это сумма параметров двух объектов.
При выводе print в методе Total_amount выводится значение 1017, а когда ставлю return - то выводится значение 1000.
class Cash_Calculator():
c = []
#d = dt.date.today()
def __init__(self, a, b, limit=1000): # Сразу ставл лимит
self.a = int(a)
self.b = int(b)
self.limit = limit
def pluss(self):
sum = self.a + self.b
return sum
def minus(self):
difference = self.a - self.b
return difference
def add_record(self):
# иницирую добавление записей в список "c"
if self.pluss() !=None:
return Cash_Calculator.c.append(self.pluss())
elif self.minus() !=None:
return Cash_Calculator.c.append(self.minus())
def total_amount(self):
#прохожу по списку и складываю значения на выходе: x = 1017
x = 0
for i in Cash_Calculator.c:
if i == None:
break
x += i
return x
def limits(self, sum_amount):
x = sum_amount #параметр sum_amount - это функция total_amount
#x = int(sum_amount)
#if self.limit >= x:
#print("Вы можете еще потратить!")
#else:
#print("Ваш Лимит исчерпан")
print(x)
C = Cash_Calculator(993,7)
C.pluss()
C.add_record()
C.total_amount()
C.limits(C.total_amount())
C1 = Cash_Calculator(10,7)
C1.pluss()
C1.add_record()
C1.total_amount()
C1.limits(C1.total_amount())
Результат: Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\Users\MSI\Documents\GitHub\hw_python_oop> & C:/Users/MSI/AppData/Local/Programs/Python/Python39/python.exe "c:/Users/MSI/Documents/GitHub/hw_python_oop/small test.py" 1000 1000 PS C:\Users\MSI\Documents\GitHub\hw_python_oop>
Ответы (1 шт):
У вас в методе total_amount() - return x сдвинут.
class Cash_Calculator():
c = []
def __init__(self, a, b, limit=1000):
self.a = int(a)
self.b = int(b)
self.limit = limit
def pluss(self):
sum = self.a + self.b
return sum
def minus(self):
difference = self.a - self.b
return difference
def add_record(self):
# иницирую добавление записей в список "c"
if self.pluss(): # ? !=None:
return self.c.append(self.pluss())
elif self.minus(): # ? !=None:
return self.c.append(self.minus())
def total_amount(self):
x = 0
for i in self.c:
# ? if i == None:
# ? break
x += i
# return x # <----
return x # +++
def limits(self, sum_amount):
x = sum_amount
print(x)
C = Cash_Calculator(993, 7)
_pluss = C.pluss()
_c = C.add_record()
_x = C.total_amount()
_limits = C.limits(C.total_amount())
print('-' * 30)
C1 = Cash_Calculator(10, 7)
_pluss = C1.pluss()
_c = C1.add_record()
_x = C1.total_amount()
_limits = C1.limits(C1.total_amount())