2

我的调用 check_angles 返回以下内容而不是 True:

<bound method Triangle.check_angles of <Triangle object at 0x7fb209a66b50>>

这是代码:

class Triangle(object):
    number_of_sides = 3
    def __init__(self, angle1, angle2, angle3):
        self.angle1 = angle1
        self.angle2 = angle2
        self.angle3 = angle3
    def check_angles():
        if angle1 + angle2 + angle3 == 180:
            return True
        else:
            return False

my_triangle = Triangle(60, 60, 60)

(print my_triangle.number_of_sides)
(print my_triangle.check_angles)
4

3 回答 3

2

您在()方法结束时丢失了。

输出是正确my_triangle.check_angles的:返回函数本身,所以你得到的文本是该函数的描述。要实际打印结果,只需执行print my_triangle.check_angles().

PS。请注意浮点数。一旦你使用除整数以外的东西,总和可能不完全是180. 这将是一个非常接近它的数字。如果您需要除整数以外的任何东西,那么abs(result-180) < 1e-6(或其他一些要比较的小数)会更好。

于 2013-05-11T18:58:45.170 回答
2

您必须添加括号才能调用该函数。做。

class Triangle(object):
    number_of_sides = 3
    def __init__(self, angle1, angle2, angle3):
        self.angle1 = angle1
        self.angle2 = angle2
        self.angle3 = angle3
    def check_angles(self):
        if self.angle1 + self.angle2 + self.angle3 == 180:
            return True
        else:
            return False

my_triangle = Triangle(60, 60, 60)

print my_triangle.number_of_sides
print my_triangle.check_angles()

您的实现有一些小问题,因为您没有传入self函数并执行self.angle1等等。此外,将 innumber_of_sides放入__init__.

于 2013-05-11T18:59:01.460 回答
1

首先,您缺少方法调用的括号。

接下来,您必须为self类中的任何方法提供参数。

def check_angles(self):

此外,您不想使用angle1,angle2angle3- 您需要在它们前面加上前缀,self.然后才能在适当的范围内使用它们。

最后,一个风格的东西:你可以 return self.angle1 + self.angle2 + self.angle3 == 180,因为它是布尔值。

于 2013-05-11T19:00:52.160 回答