class MyClass(object):
def f(self):
return 'hello world'
我一直在这里和其他网站上阅读的所有内容使用此代码,如果我运行MyClass.f()
,它应该返回hello world
,但我会继续
Traceback (most recent call last):
File "C:\Users\Calvin\Desktop\CS_Semester_Project\testing.py", line 5, in <module>
MyClass.f()
TypeError: unbound method f() must be called with MyClass instance as first argument (got nothing instead)
我不知道我做错了什么,非常感谢任何帮助。
答案 0 :(得分:2)
这样做:
myCls = MyClass()
myCls.f()
当你把它作为一个静态函数调用它时,错误说你f方法需要实例 您可以在about python classes in tutorial
中阅读更多methods section答案 1 :(得分:1)
错误告诉您必须在f()
类型的实例上调用MyClass
,而不是MyClass
本身。
您需要创建MyClass
的实例:
obj = MyClass()
在这种情况下,obj
将是MyClass
的实例。
然后你需要在该对象上调用f()
:
obj.f()
由于在Python中调用方法的方式,错误消息令人困惑。当您致电obj.f()
时,obj
会隐式传递给f()
作为第一个参数。这就是你必须写
def f(self):
...
当您致电self
时, obj
会引用obj.f()
。
知道如果你再看一下错误信息:
TypeError: unbound method f() must be called with MyClass instance as first argument (got nothing instead)
这更有意义。它说f()
期待一个参数,(特别是MyClass
的一个实例)并没有得到一个,因为试图在类型上调用它而不是类型的实例。