【问题标题】:2D array in Class isn't being defined类中的二维数组未定义
【发布时间】:2019-11-30 20:21:41
【问题描述】:

在这里,我基本上正在做的是,在 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

【问题讨论】:

  • 即使你修复了这个问题,你的代码仍然无法工作,因为tenDegreePts 只包含一个元素(一个列表)所以tenDegreePts[1] 会导致IndexError。

标签: python arrays class undefined nameerror


【解决方案1】:

修复name 'tenDegreePts' is not defined

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

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

您没有在任何地方定义名为 tenDegreePts 的变量,您只是定义了变量 self.tenDegreePts

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

解决其他问题

如 cmets 所述,修复上一个问题不足以使您的程序正常运行。

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)

【讨论】:

  • 你也应该解决tenDegreePts只有一个element.item。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多