Как присвоить одному объекту класса все аргументы другого?
Если брать переменные, допустим, у меня есть x и y, я хочу переменной x присвоить значение y, я просто пишу
x = y
Как сделать тоже самое с объектами класса?
Вот мой класс
class Calculator:
def sum(self, x, y):
x = int(x)
y = int(y)
self.z = x + y
self.act = "sum"
print(self.z)
def sub(self, x, y):
self.z = x - y
self.act = "sub"
print(self.z)
def mul(self, x, y):
self.z = x * y
self.act = "mul"
print(self.z)
def div(self, x, y, mod=False):
if not mod:
self.z = x / y
self.act = "div"
print(self.z)
if mod:
self.z = x % y
self.act = "mod"
print(self.z)
Op0 = Calculator()
Op1 = Calculator()
Op2 = Calculator()
Это калькулятор, который умеет выполнять 4 арифметических действия. Когда нужно выполнить действие, объекту Op0 - операция будут присваиваться соответствующие аргументы.
@cli.command("sum")
@click.argument("x")
@click.argument("y")
def sum_cli(x, y):
Op0.sum(x, y)
Но мне надо сохранять историю операций, поэтому я добавил еще 2 объекта операций, и в функцию выполнения действия пишу такой код:
def sum_cli(x, y):
Calculator.Op2 = Calculator.Op1
Сalculator.Op1 = Calculator.Op0
Calculator.Op0 = Calculator(x, y)
Op0.sum(x, y)
Но это неправильно, он видит класс Calculator, как объект. А как правильно написать?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
а если сохранять историю операций просто в списке, например transaction_history ?
class Calculator:
def sum(self, x, y):
x = int(x)
y = int(y)
self.z = x + y
self.act = "sum"
print(self.z)
return self.act, x, y # ++
def sub(self, x, y):
self.z = x - y
self.act = "sub"
print(self.z)
return self.act, x, y # ++
def mul(self, x, y):
self.z = x * y
self.act = "mul"
print(self.z)
def div(self, x, y, mod=False):
if not mod:
self.z = x / y
self.act = "div"
print(self.z)
if mod:
self.z = x % y
self.act = "mod"
print(self.z)
Op0 = Calculator()
transaction_history = [] # ++
#@cli.command("sum")
#@click.argument("x")
#@click.argument("y")
def sum_cli(x, y):
transaction_history.append(Op0.sum(x, y)) # ++
sum_cli(3, 4)
# Но мне надо сохранять историю операций,
op = Op0.sub(3, 4) # ++
transaction_history.append(op) # ++
print(transaction_history) # ++