为什么此代码不打印ar的值?

时间:2020-06-03 18:07:49

标签: python oop inheritance

这是我的作业问题-

使用以下内容编写一个Python程序(带有类概念)以找到三角形的区域 式。 面积=(s *(s-a)(s-b)(s-c))** 0.5 应该在父级中定义从用户获取三角形边长的函数 计算面积的类和函数应在子类中定义。

我的程序就是这样-

class triangle:

    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

class cal_area(triangle):
    s = 0
    area = 0

    def area(self, *args):
        super(cal_area, self).__init__(*args)
        s = (self.a + self.b + self.c)/2
        ar = (s * (s-self.a) * (s-self.b) * (s-self.c)) * 0.5
        print(ar)

t = cal_area(23,43,56)
print(t.area)   

我希望它能打印三角形的区域。但是输出是这个

 <bound method cal_area.area of <__main__.cal_area object at 0x0415CCB0>>

我正在使用jupyter笔记本。 我该怎么做才能获得所需的输出。

1 个答案:

答案 0 :(得分:1)

area是一种方法,您没有调用它。在通话行中添加括号:

print(t.area())

不过,您需要删除super(cal_area, self).__init__(*args)中的area行(可能还有*args参数);您的实例已经初始化,并尝试使用新值(在这种情况下可能是错误的参数数量)重新初始化它会引起问题。

最后,area应该返回它计算的值,而不是打印它,将方法的最后一行更改为:

return ar