Конечно.
То, что вы делаете, по сути
a = Math(5) # a is a "Math" object
b = a.add(5) # b is what add() returns, i. e. an int
c = b.sub(3) # an int has no sub() method
Я не знаю, чего именно вы хотите достичь: хотите ли вы добавить add () и sub ()объект, на котором вы работаете?В этом случае вы можете сделать
class Math:
def __init__(self, number):
self.number = number
def add(self, add_num):
self.number = self.number + add_num
return self
def sub(self, sub_num):
self.number = self.number - sub_num
return self
Если вы не хотите этого, вы можете сделать вместо этого
class Math:
def __init__(self, number):
self.number = number
def add(self, add_num):
return Math(self.number + add_num)
def sub(self, sub_num):
return Math(self.number - sub_num)
return self
В обоих случаях ваш предполагаемый способ объединения вызовов работает.