python - 为什么这段代码不打印 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 笔记本。我应该怎么做才能获得所需的输出。
解决方案
area
是一种方法,而您没有调用它。在调用行中添加括号:
print(t.area())
您需要删除该super(cal_area, self).__init__(*args)
行area
(可能还有*args
参数);您的实例已经初始化,并且尝试使用新值(可能是错误数量的参数,如本例)重新初始化它会导致问题。
最后,area
应该返回它计算的值,而不是打印它,将方法的最后一行更改为:
return ar
推荐阅读
- wpf - (WPF) 使用 hunspell 创建拼写检查时出现文本框问题
- python - Python 在竞争性编码中获取测试用例的输入
- php - Symfony 形式大数据集
- c++ - 使用工具创建新的命名空间
- python - 字典值没有被替换。类型错误:不可散列类型:“列表”
- java - SDK 目录“C:\Users\User\AppData\Local\Android\sdk”不存在
- r - 为什么 R 在使用 str 后进行修改时复制?
- python - python中的控制流与字符串
- search - 怎么做 - 数据目录中的通配符搜索(谷歌云平台)
- asp.net-core - blazor-webassembly 上传文件无法显示进度?