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)
基本上我所做的是,在 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)