繁体   English   中英

在 python 中创建一个可调用的类

[英]Making a class callable in 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()不是吗?

您需要创建一个类的实例来运行__init__方法。 而且您还需要确保您的程序启动。 您可以通过编写do_something()调用/实例化一个函数; 你通过编写neg()调用一个类。

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

看到你评论说你需要“调用”这个类,你有没有尝试过它? 你应该已经得到了答案。 看一个壳:

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

无论你是在写一个函数还是一个类,除非你在做一些复杂的事情,否则你不需要实现__call__ 请找到一些教程或阅读文档。

类是可调用的,仅在您“调用”一个类以创建该类的实例的意义上。 通过使用括号和可选参数,您可以使用与调用函数相同的语法来调用类。 这与call无关,它只影响实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM