这是受到我刚刚看到的问题的启发,"通过调用类实例"来更改返回的内容,但很快就用__repr__
回答了(并且接受了,所以提问者实际上并没有打算调用实例)。
现在可以这样调用类的实例:
instance_of_object = object()
instance_of_object()
但我们会收到错误,例如TypeError: 'object' object is not callable
。
此行为在CPython source here.
中定义所以为了确保我们在Stackoverflow上有这个问题:
你如何在Python中实际调用类的实例?
答案 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!
我们现在已经成功地调用了这个类的实例!