未定义Class中的2D数组

时间:2019-11-30 20:21:41

标签: python arrays class undefined nameerror

在这里,我基本上是在做什么,在Circle类中,我试图用周长上相距10度的点组成一个数组。

class Circle:
    def __init__(self, rad, originX, originY):
        self.rad = rad
        self.woriginX = originX
        self.woriginY = originY
        self.tenDegreePts= [[]]

        for theta in range(0, 360, 10):
            b = round((np.cos(theta)))*rad
            a = round((np.sin(theta)))*rad
            tenDegreePts[0].append(originX+b)
            tenDegreePts[1].append(originY+a)

问题是,当我在另一行中键入此内容时:

circle1 = Circle(75,300,300)

这给我一个错误:NameError: name 'tenDegreePts' is not defined

1 个答案:

答案 0 :(得分:0)

修复name 'tenDegreePts' is not defined

您应使用self访问变量,如下所示:

self.tenDegreePts[0].append(originX+b)

在定义变量tenDegreePts的任何地方,您只定义了变量self.tenDegreePts

如果它适用于rad,那是因为rad被定义为方法参数,而tenDegreePts不是。

解决其他问题

修正前面的问题不足以使您的程序正常运行,如注释中所述。

self.tenDegreePts[0].append(originX+b)

将起作用,因为定义了self.tenDegreePts[0]。如您所写,其值最初是[]self.tenDegreePts= [[]]

但是

self.tenDegreePts[1].append(originX+b)

将因索引超出范围错误而崩溃,因为列表中没有第二个元素。 self.tenDegreePts[1]确实尝试访问self.tenDegreePts列表中的第二个元素。您应该改为这样初始化它:

self.tenDegreePts = [[], []] #two items to start with (both empty lists)