提问人:qandira 提问时间:9/17/2023 更新时间:9/18/2023 访问量:29
Python - UnboundLocal 错误 - 类内多次函数调用后类实例消失
Python - UnboundLocal Error - class instanc vanishes after several function calls within class
问:
第一次尝试使用 Python - 提前致谢。
我从 def:“Budget” 重复调用 def:“Add_expense”。
我的目的是创建一个类实例 A = category(name),其参数显示在 init 下。此实例仅调用一次,因为在后续调用中,将识别“name”值,并且将跳过此步骤。
然后是一个类函数 A.expense(qty, descr),在多次调用函数后,将数量和描述串到 init 中的 self.lists() 中,并在 self.dict()={'bal':0} 中累积总余额
但是,在第二次运行 def:“Add_expense” 之后,当我调用 A.expense(qty, descr) 时,出现以下错误:发生异常:UnboundLocalError 无法访问与值无关的局部变量“A”
对不起,我已经搜索了很远很远,但我完全被困住了。
谢谢!
class category:
options = dict()
keys = list()
def __init__(self, name):
self.name = name
self.qties = list()
self.descrs = list()
self.bal = {'bal':0}
def expense(self, qty, descr):
self.qties.append(qty)
self.descrs.append(descr)
balance = self.bal.get('bal')
balance += qty
self.bal['bal'] = balance
print(self.name, self.qties, self.descrs, self.bal.get('bal'))
def budget():
# [...] More options will be added here.
category.Add_expense()
def Add_expense():
indx = 0
exist = 0
name = input('Name: ')
descr = input('Description: ')
qty = int(input('Quantity: '))
if len(category.options) > 0:
for i in range(0,len(category.options)+1):
if category.options.get(i) == name: exist = 1
if exist != 1:
A = category(name)
category.options.update({indx:name})
category.keys.append(name)
elif exist == 1:
exist = 0
A.expense(qty, descr)
category.budget()
category.budget()
答: 暂无答案
评论