Python 从表示几何球体的类中获取TypeError,

Python 从表示几何球体的类中获取TypeError,,python,class,Python,Class,我正在用python做一个项目,我不明白为什么我会在这个项目上出错 该项目如下 import math class Spheres: def __init__(self,radius): self.radius = radius self.area = 0 self.volumeResult = 0 def getRadius(self): return self.radius def surfaceAr

我正在用python做一个项目,我不明白为什么我会在这个项目上出错

该项目如下

import math
class Spheres:
    def __init__(self,radius):
        self.radius = radius
        self.area = 0
        self.volumeResult = 0

    def getRadius(self):
        return self.radius

    def surfaceArea(self):
        r = self.radius
        self.area = 4 * math.pi * (r * r)
        return self.area

    def volume(self):
        r = self.radius
        self.volumeResult = (4/3) * math.pi * (r * r * r)
        return self.volumeResult

def main():
    r = input("enter radius of circle:")
    r = int(r)
    radius = Spheres(r)
    v = radius.volume()
    a = radius.surfaceArea()

    print ("volume of circle :" , v () )
    print ("Surface Area of circle:" , a () )

main()
  • 编写一个类来表示几何球体。您的类应实现以下方法:

    • \uuuuu init\uuuuuu(self,radius)
      创建具有给定半径的球体
    • getRadius(self)
      返回此球体的半径
    • surfaceearea(self)
      返回球体的表面积
      面积公式为表面积=4πr2
    • volume(self)
      返回球体的体积。体积公式为
  • 编写一个
    main()
    方法,提示用户输入球体的半径,并告诉用户给定半径的表面积和体积

  • 我目前的代码如下

    import math
    class Spheres:
        def __init__(self,radius):
            self.radius = radius
            self.area = 0
            self.volumeResult = 0
    
        def getRadius(self):
            return self.radius
    
        def surfaceArea(self):
            r = self.radius
            self.area = 4 * math.pi * (r * r)
            return self.area
    
        def volume(self):
            r = self.radius
            self.volumeResult = (4/3) * math.pi * (r * r * r)
            return self.volumeResult
    
    def main():
        r = input("enter radius of circle:")
        r = int(r)
        radius = Spheres(r)
        v = radius.volume()
        a = radius.surfaceArea()
    
        print ("volume of circle :" , v () )
        print ("Surface Area of circle:" , a () )
    
    main()
    
    当我运行代码时,它看起来像这样

    输入圆的半径:5#####我在这里输入5来测试它
    回溯(最近一次呼叫最后一次):
    文件“C:\Users\Austin\Desktop\python奖金项目\AustinBaker-python
    奖金.py“,第30行,输入
    main()
    文件“C:\Users\Austin\Desktop\python奖金项目\AustinBaker-python
    bonus.py“,第27行,主要部分
    打印(“圆的体积:,v())
    TypeError:“float”对象不可调用
    >>>
    
    我不明白为什么代码根本不起作用。

    您的问题是:

    print ("volume of circle :" , v () )
    print ("Surface Area of circle:" , a () )
    
    您正试图调用
    v
    a
    ,但这些变量不可调用,它们是
    float
    s

    In [1]: v = 12.4
    
    In [2]: callable(v)
    Out[2]: False
    
    In [3]: type(v)
    Out[3]: float
    
    只需
    打印(“圆的体积:”,v)
    而不必
    ()

    作为将来的参考,回溯是您的朋友:

    File "C:\Users\Austin\Desktop\python bonus project\AustinBaker Python
    bonus.py", line 27, in main  <--- ## the line number in your program where it all went wrong
    print ("volume of circle :" , v () )  <-- ## the line of code that crapped out
    TypeError: 'float' object is not callable  <-- ## why it crapped out
    
    因此,这样做:

    In [1]: s = Sphere(2)
    
    In [2]: s.area
    Out[2]: 50.26548245743669
    
    In [3]: s.volume
    Out[3]: 33.510321638291124
    
    In [4]: s.radius = 3
    
    In [5]: s.volume
    Out[5]: 113.09733552923254
    
    In [6]: s.area
    Out[6]: 113.09733552923255
    
    打印(“圆的体积:,v)
    。您不能调用
    float