我是python新用户。因此,这可能非常愚蠢。但是最好的方法是自动运行一个类(内部有多个函数)并返回给定值的结果。例如:
class MyClass():
def __init__(self,x):
self.x=x
def funct1(self):
return (self.x)**2
##or any other function
def funct2(self,y):
return y/100.0
##or any other function
def wrapper(self):
y=self.funct1()
z=self.funct2(y)
##or other combination of functions
return z
现在运行此命令,我正在使用:
run=MyClass(5)
run.wrapper()
但是我想这样运行:
MyClass(5)
这将返回一个值,并且可以将其保存在变量中,而无需使用包装函数。
答案 0 :(得分:1)
您可以如下创建函子:
class MyClass(object):
def __init__(self,x):
self.x=x
def funct1(self):
return (self.x)**2
##or any other function
def funct2(self,y):
return y/100.0
##or any other function
def __call__(self):
y=self.funct1()
z=self.funct2(y)
##or other combination of functions
return z
对此函子的调用将如下所示:
MyClass(5)() # Second () will call the method __call__. and first one will call constructor
希望这会对您有所帮助。
答案 1 :(得分:0)
因此,当您编写MyClass(5)
时,您正在实例化那个类的新实例:MyClass
,因此简短的回答是否 ,您确实需要包装器,因为在实例化类时,它必然会返回对象而不是某个值。
如果只想基于输入返回一个值(例如5
),请考虑改用function
。
函数如下:
def my_func(x):
y = x**2
z = y/100.0
return z
使用类的原因很多,请参见此答案https://stackoverflow.com/a/33072722/4443226-但是,如果您只关心运算/等式/函数的输出,那么我会坚持使用函数。
答案 2 :(得分:-1)
__init__
方法应返回None
。
documentation link
init ()
不能返回非非值