我不明白上课是怎么用的.下面的代码在我try 使用该类时给出了一个错误.

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))
Type错误: 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)

要解决这个问题,需要修改average方法的定义,使其包含四个参数.第一个参数是对象引用,其余3个参数将用于3个数字.

Python-3.x相关问答推荐

在多个测试中维护和报告变量

使用数据库将文件从Sharepoint下载到文件系统

基于组/ID从原始数据框中创建两个子数据框

如何根据索引子列表对元素列表进行分组或批处理?

来自嵌套字典的完整地址

从 h264 帧解析数据包时 PyAV 不一致

对齐文本文件中的列

具有 2 个输入的 python 3 map/lambda 方法

为 python3 安装 opencv

为什么 virtualenv 会有效地禁用 Python 3 制表符补全?

如何将 SimpleGUI 与 Python 2.7 和 3.0 shell 集成

python 内置的 __exit__ 参数类型是什么?

在不关心项目的情况下运行生成器功能的更简单方法

在 Ubuntu 上为 Python3 安装 mod_wsgi

为什么 string.maketrans 在 Python 3.1 中不起作用?

Pyodbc:登录超时错误

对字节进行按位运算

我可以替换 Python 中对象的现有方法吗?

print(... sep='', '\t' ) 是什么意思?

update和update_idletasks有什么区别?