gpt4 book ai didi

python - 必须使用 fibo_ 实例作为第一个参数调用未绑定(bind)的方法 f()(改为获取 classobj 实例)

转载 作者:IT老高 更新时间:2023-10-28 12:29:54 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com