Class 中的二维数组未定义

2D array in Class isn't being defined

基本上我所做的是,在 class 圆中,我试图制作一个阵列,其圆周上的点相隔 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

修复 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)