Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用类修复python中的“无法分配给函数调用”错误并允许其运行?_Python - Fatal编程技术网

如何使用类修复python中的“无法分配给函数调用”错误并允许其运行?

如何使用类修复python中的“无法分配给函数调用”错误并允许其运行?,python,Python,我正在尝试创建一个功能,用户可以从商店购买配料。每一个的价格是1美元,配料是苹果、甜菜和胡萝卜。他们拥有的起始金额是20美元,因此每次他们购买一种配料时,他们购买的数量都会下降。 因此,如果他们买了3个苹果,那么剩下的总金额将是17美元,配料将添加到投资清单中 def buyingredientname,编号:int: 全球总数 如果编号*价格[名称]>总计: 现金不够! elif name==“苹果”: intinventory.getApple+=数量 elif名称==‘甜菜’: IntI

我正在尝试创建一个功能,用户可以从商店购买配料。每一个的价格是1美元,配料是苹果、甜菜和胡萝卜。他们拥有的起始金额是20美元,因此每次他们购买一种配料时,他们购买的数量都会下降。 因此,如果他们买了3个苹果,那么剩下的总金额将是17美元,配料将添加到投资清单中

def buyingredientname,编号:int: 全球总数 如果编号*价格[名称]>总计: 现金不够! elif name==“苹果”: intinventory.getApple+=数量 elif名称==‘甜菜’: IntInventory.getBeets+=数量 elif名称==“胡萝卜”: intinventory.getCarrots+=数量 total-=数字*价格[名称]GetApple的目的是什么?它将self.apple_num转换为整数,但它已经是整数了

如果不使用getter函数,只直接访问属性,代码将更干净:

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,这是非法的,因为您无法将函数调用的结果指定为其他内容。