Python3,在方法调用中将变量值更改为类



我有init_sale变量,但当调用与该变量无关的方法时,它会更改变量值

等级代码

def get(self, nro_order):

order = Order().get_by_order(nro_order)
if order is None:
nro_order)
)
return None
init_sale = self.get_init_sale(nro_order) #this change after call calculate sale
nationalized = self.get_nationalized(order)
data = {
'init_sale': init_sale,
'nationalized': nationalized,
'sale': self.calculate_sale(init_sale, nationalized)
}
return data
def calculate_sale(self, init_sale, nationalized):
sale = init_sale
for item in sale:
for nat in nationalized:
if item['detalle_pedido_factura'] == nat['detalle_pedido_factura']:
item['nro_cajas'] -= nat['nro_cajas']
return sale

调用calculate_sale之前的init_sale:

[{'detal_pedido_actura’:1164,‘cod_table’:‘01011080050317010750’,‘ro_cajas’:1145,‘costo_caja’:18.5}]

调用calculate_sale后的init_sale:

[{'detal_pedido_actura’:1164,‘cod_table’:‘01011080050317010750’,‘ro_cajas’:0,‘costo_caja’:18.5}]

nro_cajas值变化

感谢

根据您的代码,您的方法calculate_sale将nro_cajas减去自身:'item['nro_cajas']-=nat['ndro_cajas']'

当你这样做时:'销售=初始销售'你没有创建dict的新实例,你只是通过";销售;变量

您应该做到:'sale=init_sale.copy(('

im解决了这个问题,但我认为的方法不正确

def calculate_sale(self, init_sale, nationalized):
sale = [] #create empty list
for itm in init_sale: #append items :(
sale.append({
'detalle_pedido_factura': itm['detalle_pedido_factura'],
'cod_contable': itm['cod_contable'],
'nro_cajas': itm['nro_cajas'],
'costo_caja': itm['costo_caja'],
})
for item in sale:
for nat in nationalized:
if item['detalle_pedido_factura'] == nat['detalle_pedido_factura']:
item['nro_cajas'] -= nat['nro_cajas']
return sale

最新更新