使一个类在python中可调用

时间:2016-06-18 18:29:33

标签: python

我开始知道我们也可以在没有实现__call__()函数的情况下使类成为可调用的,我正在尝试编写类似的东西但是我被卡住了:下面是我的代码

class neg:
    def __init__(self): # Classes are callables too
        self.val = 54545 
    def __repr__(self): 
        return str(self.val)

if __name__=='__main__':
       x=neg
       print(x) #print(neg()) also shows nothing
       #added by Merlin
       print('value of x:', x ) 

执行上述操作无效,它无法打印,我在这里缺少什么?

我读取的示例使类可调用:

class Negate:
    def __init__(self, val): # Classes are callables too
    self.val = -val # But called for object, not work
    def __repr__(self): # Instance print format
    return str(self.val)
     actions = [square, sobject, pobject.method, Negate] # Call a class too
    for act in actions:
    print(act(5))
  

我修复了它确实有用的主要部分,但是当他们说一个类是可调用的时候   然后它不应该neg()不是吗?

2 个答案:

答案 0 :(得分:1)

您需要创建该类的实例才能运行__init__方法。而且你还需要确保你的程序启动。通过编写do_something()来调用/实例化一个函数;你通过写neg()来打电话给一个班级。

if __name__ == '__main__': # Fix the main so program starts
    x = neg() # Call the class!
    print(x)

看到你评论说你需要打电话"这堂课,你试过试试吗?你应该得到答案。看一下shell:

>>> neg
<class __main__.neg at 0x103842db8>
>>> neg()
5435                    # Displays the __repr__ return value.

无论您是在撰写函数还是编写课程,都不需要实施__call__,除非您正在做复杂的事情。请找一些教程或阅读文档。

答案 1 :(得分:0)

课程是可以调用的,只有在您调用&#34;用于创建类实例的类。使用括号和可选参数调用具有与调用函数相同语法的类。这与调用无关,只会影响实例。