在这里,我基本上是在做什么,在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
答案 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)