如何使用类修复python中的“无法分配给函数调用”错误并允许其运行?
我正在尝试创建一个功能,用户可以从商店购买配料。每一个的价格是1美元,配料是苹果、甜菜和胡萝卜。他们拥有的起始金额是20美元,因此每次他们购买一种配料时,他们购买的数量都会下降。 因此,如果他们买了3个苹果,那么剩下的总金额将是17美元,配料将添加到投资清单中 def buyingredientname,编号:int: 全球总数 如果编号*价格[名称]>总计: 现金不够! elif name==“苹果”: intinventory.getApple+=数量 elif名称==‘甜菜’: IntInventory.getBeets+=数量 elif名称==“胡萝卜”: intinventory.getCarrots+=数量 total-=数字*价格[名称]GetApple的目的是什么?它将self.apple_num转换为整数,但它已经是整数了 如果不使用getter函数,只直接访问属性,代码将更干净:如何使用类修复python中的“无法分配给函数调用”错误并允许其运行?,python,Python,我正在尝试创建一个功能,用户可以从商店购买配料。每一个的价格是1美元,配料是苹果、甜菜和胡萝卜。他们拥有的起始金额是20美元,因此每次他们购买一种配料时,他们购买的数量都会下降。 因此,如果他们买了3个苹果,那么剩下的总金额将是17美元,配料将添加到投资清单中 def buyingredientname,编号:int: 全球总数 如果编号*价格[名称]>总计: 现金不够! elif name==“苹果”: intinventory.getApple+=数量 elif名称==‘甜菜’: IntI
elif name == 'apple':
iinventory.apple_num += number
该部分:
int(iinventory.getCarrots()) += number
翻译为:
int(0) += number
# (0 is the current value)
int0是一个函数调用,分配给它是非法的
因此,您应该做的是删除GetAnywhere方法并使用以下方法:
iinventory.carrots_num += 1
由于函数返回命名属性,因此可以直接访问属性本身。此外,您不需要使用int,因为它已经是一个整数了,而不是这个:
intinventory.getCarrots+=数量
你想要的是:
iinventory.carrots_num+=数字
您还可以创建addCarrots方法,以便将内部属性与外部调用隔离开来,这在测试和代码可维护性方面具有优势。您还可以将内部属性重命名为self.\u carrot\u num,并使用@property decorator创建一个方法carrot\u num。它转换为int0=number,这是非法的,因为您无法将函数调用的结果指定为其他内容。