在这种情况下,如何获得返回值。 (就像我的功能一样)
class A(object):
def __init__(self,a,b):
self.a = a
self.b = b
self.run()
def run(self):
return a + b
当我这样做时,我得到一个实例,我将如何获得返回值?
由于 詹姆斯
答案 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__
方法的类的实例,用于高级但仍然非常合理的用例)!