当前位置: 首页 > 面试题库 >

调用类方法会在Python中引发TypeError

陈允晨
2023-03-14
问题内容

我不明白如何使用类。当我尝试使用该类时,以下代码给我一个错误。

class MyStuff:
    def average(a, b, c): # Get the average of three numbers
        result = a + b + c
        result = result / 3
        return result

# Now use the function `average` from the `MyStuff` class
print(MyStuff.average(9, 18, 27))

错误:

File "class.py", line 7, in <module>
    print(MyStuff.average(9, 18, 27))
TypeError: unbound method average() must be called with MyStuff instance as first argument (got int instance instead)

怎么了?


问题答案:

您可以通过声明变量并像调用一个函数一样实例化该类:

x = mystuff()
print x.average(9,18,27)

但是,这不适用于您提供给我们的代码。当您在给定对象(x)上调用类方法时,它在调用函数时始终将指向该对象的指针作为第一个参数传递。因此,如果您现在运行代码,则会看到以下错误消息:

TypeError: average() takes exactly 3 arguments (4 given)

要解决此问题,您需要修改平均值方法的定义以采用四个参数。第一个参数是对象引用,其余3个参数用于3个数字。



 类似资料:
  • 问题内容: 我对Java中的多态性有基本的疑问。我已经在一个名为AnimalTestDrive.java的文件中编写了以下代码。根据我的说法,以下代码应专门以粗体显示该行,但不幸的是,它不能。您能否解释为什么,我给出了以下错误: 问题答案: 让我们尝试以与编译器相同的方式查看此行: 首先,它需要弄清楚是什么意思。很好而且很容易-它是当前方法中的局部变量,因此它不需要花很多时间。 该变量的编译时类型

  • 问题内容: 我在这里超负荷工作,但是请耐心等待这位Python业余爱好者。我是一名从事贸易的PHP开发人员,以前几乎没有接触过这种语言。 我想做的是在类中调用方法…听起来很简单?对于“自我”是什么,以及在类内和类外调用这种方法的正确过程,我完全感到困惑。 有人 可以 向我 解释 如何用变量调用方法。我曾尝试在多个“学习python”站点上进行研究,并在StackOverflow上进行搜索,但无济于

  • 问题内容: 我用Java编写了这个程序 我读到在对象上调用方法会导致,但是上面的程序不是吗?为什么是这样?我是否理解不正确? 问题答案: 是一种方法。一个成员所属的类型,并且不需要一个实例来访问。 甲构件应该仅可以经由型表达访问。也就是说,你应该将其编写如下: Java确实允许你通过对象引用表达式访问成员,但这非常容易引起误解,因为这不是成员访问的实际语义。 通过对象引用表达式访问成员时,仅声明的

  • 问题内容: 最初,我有一个类来存储一些处理后的值,并将其与其他方法重用。 问题是,当我尝试将类方法划分为多个进程以加快速度时,python生成了进程,但它似乎不起作用(正如我在“任务管理器”中看到的那样,只有1个进程在运行)并且结果从未交付。 我进行了几次搜索,发现pathos.multiprocessing可以代替它,但是我想知道标准库是否可以解决这个问题? 问题答案: 您的代码失败了,因为它无

  • 问题内容: 是否有可能在Java 引用上创建方法引用的原因 ?这样做可能永远是不正确的,但是会导致错误,以后很难找到: 问题答案: 是否有可能在Java 引用上创建方法引用的原因 ? 不是 ,但是Eclipse在这方面显然存在一个错误(编辑:此问题已得到修复)。根据规范,当您使用JDK的工具时,它会失败,并且在线上会出现NPE 。 证明:http://ideone.com/APWXna(或编译和本

  • 我试图从java调用python文件。但它会抛出以下错误。 我尝试过的代码是: 可能是什么问题?