【问题标题】:Confusion about how self.something works in classes [duplicate]关于self.something在类中如何工作的困惑[重复]
【发布时间】:2016-12-29 12:00:57
【问题描述】:

为什么这段代码不起作用?

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

【问题讨论】:

  • 就是这样:angle1 是一个作用域是构造函数的变量,而self.angle1self 的一个属性。它们不是一回事。

标签: python


【解决方案1】:

因此,为了解释这一点,请考虑以下内容。当您到达函数Triangle.check_angles 时,请考虑此时定义的内容。你有你的self 对象,它定义了angle1、angle2 和angle3(即你定义了self.angle1self.angle2self.angle3)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多