[英]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.