未绑定的方法f()必须以fibo_实例作为第一个参数来调用(取而代之的是class classobj实例)

发布于 2021-01-29 19:12:48

在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

这个错误是什么意思?是什么导致此错误?

关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好的,首先,您不必使用不同的名称来引用模块。您已经有一个参考(来自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
    

    绑定的方法 是一个被附加到对象的实例。的 未结合的方法 是,当然,一个是
    附连到一个实例。该错误通常意味着您是在类而不是实例上调用方法,这正是在这种情况下发生的事情,因为您没有实例化该类。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看