Python将函数误认为是未定义的变量

2024-10-01 04:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,它说第11行中的create没有定义,但它是类中的递归函数。在VS代码中,它在第6行显示了一个错误-它说我缺少self参数,但是当我添加它时,它在第23行需要3个参数(为什么,我不能为self提供参数,对吗?)在

我已经尝试过在参数中添加self的各种变体,但是没有任何效果。在

class smarray:
    def __init__ (self):

        self.array = []

    def create(index, dim):
        array1 = []
        if index < len(dim)-1:
            for x in range(0,dim[index]):

                array1.append((create(index+1,dim)))

            return array1
        else:
            for x in range(0,dim[index]):
                array1.append("nul")
            return array1
        if index ==0:
            self.array = array1

t = smarray()

t = smarray.create(0, [3,4])

错误TB:

^{pr2}$

Tags: inselffor参数indexifdef错误
1条回答
网友
1楼 · 发布于 2024-10-01 04:59:39

要运行此代码段,需要修复以下几点:

class smarray:
    def __init__(self):
        self.array = []

    def create(self, index, dim):
        array1 = []
        if index < len(dim)-1:
            for x in range(0, dim[index]):
                array1.append((self.create(index+1, dim)))
            return array1
        else:
            for x in range(0, dim[index]):
                array1.append("nul")
            return array1

        if index == 0:
            self.array = array1


t = smarray()
my_array = t.create(0, [3, 4])

因此,第一个修复方法是将self关键字添加到def create()方法签名中。在

第二,在array1.append(...)行中必须添加相同的self关键字,因此我们可以正确地调用create方法:self.create()

最后一次我将对create方法的调用改为“instance method”,而不是“class method”—我希望我能正确理解您在这里试图实现的目标。您可以阅读更多here。在

请注意,最后一个if index==0是不可访问的,因此代码self.array = array1永远不会执行。我不太清楚你想在那里取得什么成就。在

相关问题 更多 >