必须使用Tools实例作为第一个参数调用未绑定方法MyFunction()(没有任何内容)

时间:2014-01-27 14:17:21

标签: python class

当我试图从我的班级调用我的函数时,出现了这个错误。 这是我的班级:

class Tools:
    def PrintException(self):
        # Do something
        return 'ok'

View.py:

from tools import Tools

def err(request):
    a = 10
    b = 0
    msg = ""
    try:
        print a / b
    except Exception,ex:
        c = Tools
    return HttpResponse(Tools.PrintException())

我试图搜索并找到很多关于此错误的文章,但我认为这些都不是我的问题! unbound method must be called with instance as first argument (got nothing instead)
unbound method f() must be called with fibo_ instance as first argument (got classobj instance instead)

2 个答案:

答案 0 :(得分:3)

您为c分配的是一个类,而不是类的实例。你应该这样做:

c = Tools()

此外,您应该在实例上调用该方法:

def err(request):
    a = 10
    b = 0
    msg = ""
    try:
        print a / b
    except Exception,ex:
        c = Tools()
        return HttpResponse(c.PrintException())

注意,我已经更改了缩进,因此仅在异常时执行return语句。这是我能想到的唯一方法来理解它 - 目前还不清楚你想要用你的Tools类完成什么。这个名字太通用了 - 它没有说明这个类的目的。

答案 1 :(得分:2)

要使用没有类实例的方法,可以附加类方法装饰器,如下所示:

class Tool:
    @classmethod
    def PrintException(cls):
        return 'ok'

可以使用:

>>> Tool.PrintException()
'ok'
>>>