【问题标题】:Why unsupported operand type for ** in python classes?为什么在 python 类中不支持 ** 的操作数类型?
【发布时间】:2020-10-03 13:22:19
【问题描述】:

我正在尝试在网站上进行编码。任务是创建 2 个类 - 矩形和圆形。分别具有实例变量 l、b 和 r。这些类还需要有一个返回区域的区域方法。所以我写了代码,在spyder上测试了一下。正确处理所有测试用例。但在站点的 IDE 中出现以下错误:

 File "Solution.py", line 21, in area
    return math.pi*(r**2)
TypeError: unsupported operand type(s) for ** or pow(): 'Circle' and 'int'

下面是我的代码:

class Rectangle:
    def __init__(self,l,b):
        self.l = l
        self.b = b
    def area(l,b):
        return l*b

class Circle:
    def __init__(self,r):
        self.r = r
    def area(r):
        return math.pi*(r**2)

PS。我已经导入了数学模块。无法找出此错误的原因。任何帮助表示赞赏。

【问题讨论】:

    标签: python-3.x class methods


    【解决方案1】:

    您在 Circle 函数中缺少 self 变量(传递为 'r'), 代码应该如下所示(我以一种对我来说有意义的方式对其进行了一些更改,但我希望你能明白错误是什么):

    class Rectangle:
        def __init__(self,l,b):
            self.l = l
            self.b = b
        def area(self):
            return self.l*self.b
    
    class Circle:
        def __init__(self,r):
            self.r = r
        def area(self):
            return math.pi*(self.r**2)
    

    或者您可以使用该函数的一些静态实现。

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 2020-12-04
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多