从类中获取返回值

时间:2010-07-08 00:40:17

标签: python

在这种情况下,如何获得返回值。 (就像我的功能一样)

class A(object):
    def __init__(self,a,b):
        self.a = a
        self.b = b
        self.run()
    def run(self):
        return a + b

当我这样做时,我得到一个实例,我将如何获得返回值?

由于 詹姆斯

2 个答案:

答案 0 :(得分:4)

您是否正在尝试执行以下操作:

class A(object):
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def __call__(self):
        return self.a + self.b

a = A(3, 4)
a() # returns 7

目前尚不清楚你想要什么以及为什么。 __init__修改自我对象,但需要返回None(即不返回)。其他任何内容都会导致TypeError

编辑:为避免创建实例,您可以覆盖__new__

class A(object):
    def __new__(self,a,b):
        return A.run(a, b);
    @staticmethod
    def run(a, b):
        return a + b

你仍然没有完全解释为什么需要这个。

答案 1 :(得分:1)

调用类型的主要目的是创建(并返回)该类型的实例 - 尽管您可以使用__new__来解决这个问题,为什么,重要的一切的名称,你想要编码一个本质上不可能通过正常手段实例化的类型?!看起来你有一些“聪明”的东西,但是,请记住,“聪明”是不是在Python社区中的赞美......相反,Python是关于简单。只需使用一个函数(或任何其他可调用函数,例如具有__call__方法的类的实例,用于高级但仍然非常合理的用例)!