Python 在课堂上对自我是如何运作的困惑
为什么这个代码不起作用Python 在课堂上对自我是如何运作的困惑,python,Python,为什么这个代码不起作用 class Triangle(object): def __init__(self, angle1, angle2, angle3): self.angle1 = angle1 self.angle2 = angle2 self.angle3 = angle3 number_of_sides = 3 def check_angles(self): sum_of_angles = an
class Triangle(object):
def __init__(self, angle1, angle2, angle3):
self.angle1 = angle1
self.angle2 = angle2
self.angle3 = angle3
number_of_sides = 3
def check_angles(self):
sum_of_angles = angle1 + angle2 + angle3 # PLS LOOK AT THIS LINE
if sum_of_angles == 180:
return True
else:
return False
但这是真的吗
class Triangle(object):
def __init__(self, angle1, angle2, angle3):
self.angle1 = angle1
self.angle2 = angle2
self.angle3 = angle3
number_of_sides = 3
def check_angles(self):
sum_of_angles = self.angle1 + self.angle2 + self.angle3 # LOOK HERE AGAIN
if sum_of_angles == 180:
return True
else:
return False
如果Self.angLe1= angle 1,为什么我不能只使用较短的版本?
< p>所以解释一下,请考虑下面的内容。当你得到函数<代码>三角形时,检查角度< /代码>,考虑在那一点上定义了什么。您拥有定义了角度1、角度2和角度3的self
对象(即定义了self.angle1
、self.angle2
和self.angle3
)
但是,
angle1
本身不是一个已知变量,因为它没有传递到函数中(就像在self.\uuuuu init\uuuu
函数中一样)。因此,如果您请求angle1
,则未定义它,并引发错误。清楚吗?就是这样:angle1
是一个变量,其范围是构造函数,而self.angle1
是self
的属性。它们不是一回事。