作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 Python 中,我试图在类中运行一个方法,但出现错误:
Traceback (most recent call last):
File "C:\Users\domenico\Desktop\py\main.py", line 8, in <module>
fibo.f()
TypeError: unbound method f() must be called with fibo instance
as first argument (got nothing instead)
代码:(swineflu.py)
class fibo:
a=0
b=0
def f(self,a=0):
print fibo.b+a
b=a;
return self(a+1)
脚本 main.py
import swineflu
f = swineflu
fibo = f.fibo
fibo.f() #TypeError is thrown here
这个错误是什么意思?是什么导致了这个错误?
最佳答案
好的,首先,您不必将模块的引用换成不同的名称;您已经有一个引用(来自 import
),您可以直接使用它。如果您想要一个不同的名称,只需使用 import swineflu as f
。
其次,你得到的是对类的引用,而不是实例化类。
所以应该是这样的:
import swineflu
fibo = swineflu.fibo() # get an instance of the class
fibo.f() # call the method f of the instance
绑定(bind)方法是一种附加到对象实例的方法。当然,未绑定(bind)方法是不附加到实例的方法。该错误通常意味着您是在类而不是实例上调用该方法,这正是在这种情况下发生的情况,因为您尚未实例化该类。
关于python - 必须使用 fibo_ 实例作为第一个参数调用未绑定(bind)的方法 f()(改为获取 classobj 实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4473184/
在 Python 中,我试图在类中运行一个方法,但出现错误: Traceback (most recent call last): File "C:\Users\domenico\Desktop\
我是一名优秀的程序员,十分优秀!