Python - UnboundLocal 错误 - 类内多次函数调用后类实例消失

Python - UnboundLocal Error - class instanc vanishes after several function calls within class

提问人:qandira 提问时间:9/17/2023 更新时间:9/18/2023 访问量:29

问:

第一次尝试使用 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()
Python 局部变量 未绑定

评论


答: 暂无答案