关于self.something如何在类中工作的困惑

时间:2016-12-29 12:00:58

标签: 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 = 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 = angle1,为什么我不能只使用较短的版本?

1 个答案:

答案 0 :(得分:0)

为了解释这一点,请考虑以下内容。当您到达函数Triangle.check_angles时,请考虑在该点定义的内容。您拥有self对象,其中定义了angle1,angle2和angle3(即您已定义self.angle1self.angle2self.angle3

但是,angle1本身不是已知变量,因为它不会传递给函数(就像在self.__init__函数中一样)。因此,如果您要求angle1,则它未定义,并引发错误。那是清楚的吗?