我在努力自学Python,并且大部分时间都做得很好。但是,当我试图运行代码时
class Equilateral(object):
angle = 60
def __init__(self):
self.angle1, self.angle2, self.angle3 = angle
tri = Equilateral()
我得到以下错误:
Traceback (most recent call last):
File "python", line 15, in <module>
File "python", line 13, in __init__
NameError: global name 'angle' is not defined
可能有一个非常简单的答案,但为什么会发生这种情况呢?
当a,b,c=d无效时,a=b=c=d工作正常。
您需要在这里使用
self.angle
,因为类本身就是名称空间,要访问类内的属性,我们使用self.attr
语法,或者您也可以在这里使用Equilateral.angle
,因为angle
也是一个类变量。这仍然是错误的,因为你不能给三个变量分配一个值:
示例:
应该是
只要说
angle
,python就会寻找一个不存在的全局angle
变量。您必须通过self
变量引用它,或者由于它是类级变量,您还可以说Equilateral.angle
另一个问题是逗号分隔的
self.angleN
s。当您以这种方式赋值时,python将在等号的两边查找相同数量的部分。例如:相关问题 更多 >
编程相关推荐