首页 > 解决方案 > 为什么这段代码不打印 ar 的值?

问题描述

这是我的作业问题-

编写一个 Python 程序(带有类概念)以使用以下公式找到三角形的面积。area = (s*(sa) (sb) (sc)) ** 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 笔记本。我应该怎么做才能获得所需的输出。

标签: pythonoopinheritance

解决方案


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

print(t.area())

您需要删除该super(cal_area, self).__init__(*args)area(可能还有*args参数);您的实例已经初始化,并且尝试使用新值(可能是错误数量的参数,如本例)重新初始化它会导致问题。

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

return ar

推荐阅读