在python类中自动返回值

时间:2018-10-09 12:55:10

标签: python python-2.7

我是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)

这将返回一个值,并且可以将其保存在变量中,而无需使用包装函数。

3 个答案:

答案 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 ()

不能返回非非值