错误代码说"浮动对象不可调用"但我没有打电话给它

时间:2016-06-30 16:14:46

标签: python python-2.7

我正在处理打印出圆柱体表面区域的代码:

class Cylinder(object):

    def __init__(self,height=1,radius=1):
        self.height = height
        self.radius = radius

    def volume(self):
        return float(3.14159265359 *(radius**2) * height)

    def surface_area(self):
        return ((2 * 3.14159265359 (self.radius **2)) + (2 * 3.14159265359 * self.radius * self.height))

所有代码都有效......除了surface_area

height = 5
radius = 7
cy = Cylinder(height,radius)

cy.volume()

此块打印出来:     769.69020012955,这是正确的。

这是发生错误的地方:

cy.surface_area()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-142-116a6dc9a6c1> in <module>()
----> 1 cy.surface_area()

<ipython-input-139-66295086aec9> in surface_area(self)
      9 
     10     def surface_area(self):
---> 11         return ((2 * 3.14159265359 (self.radius **2)) + (2 * 3.14159265359 * self.radius * self.height))

TypeError: 'float' object is not callable

^这是错误,我在Python 2中工作,我无法弄清问题是什么。代码出了什么问题? - 我也想知道为什么它会说&#39;浮动&#39;当我没有打电话时,我不能打电话。

2 个答案:

答案 0 :(得分:4)

您在此处调用浮点值:

3.14159265359 (self.radius **2)

请注意,float和(...)之间没有任何内容。你可能想要成倍增加,所以你错过了*

return ((2 * 3.14159265359 * (self.radius **2)) + (2 * 3.14159265359 * self.radius * self.height))

您可能希望使用math.pi constant而不是每次都输入:

from math import pi

# ...

return 2 * pi * (self.radius ** 2) + 2 * pi * self.radius * self.height

答案 1 :(得分:0)

jinja2替换为3.14159265359 (self.radius **2)。或者甚至更好,导入3.14159265359 * (self.radius **2)并将math替换为3.14159265359。有关math.pi模块,请参阅reference