你如何在Python中调用类的实例?

时间:2014-06-16 23:40:56

标签: python class call

这是受到我刚刚看到的问题的启发,"通过调用类实例"来更改返回的内容,但很快就用__repr__回答了(并且接受了,所以提问者实际上并没有打算调用实例)。

现在可以这样调用类的实例:

instance_of_object = object() 
instance_of_object()

但我们会收到错误,例如TypeError: 'object' object is not callable

此行为在CPython source here.

中定义

所以为了确保我们在Stackoverflow上有这个问题:

  

你如何在Python中实际调用类的实例?

1 个答案:

答案 0 :(得分:43)

您可以按以下方式调用类的实例:

o = object() # create our instance
o() # call the instance

但这通常会给我们一个错误。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'object' object is not callable

我们如何按预期调用实例,并从中获得一些有用的东西?

我们必须实现Python特殊方法__call__

class Knight(object):
    def __call__(self, foo, bar, baz=None):
        print(foo)
        print(bar)
        print(bar)
        print(bar)
        print(baz)

实例化课程:

a_knight = Knight()

现在我们可以调用类实例:

a_knight('ni!', 'ichi', 'pitang-zoom-boing!')

打印:

ni!
ichi
ichi
ichi
pitang-zoom-boing!

我们现在已经成功地调用了这个类的实例!