2016-09-22 67 views
0

有没有什么办法可以访问其他函数中的函数返回?获取其他函数中的函数返回?

可能下一个代码更多地解释我想要做什么。

class perro: 
    def coqueta(self, num1, num2): 
     self.num1 = num1 
     self.num2 = num2 
     return self.num1 + self.num2 

    def otro_perro(self, coqueta): 
     print otro_perro 




mascota = perro() 
ejemplo = mascota.coqueta(5,5) 
mascota.otro_perro() 

print ejemplo 

我怎样才能第一defcoqueta)返回在第二个函数(otro_perro)打印?

+0

您能否澄清您的问题?你想实现什么?代码中还有一些可能的错误:例如,方法'otro_perro'中的参考'otro_perro'(作为回报)未被初始化,并且与方法调用'self.otro_perro'不同,这会导致无限递归。 –

+0

@ M.Wymann _我可以如何获得拳头高清的回报? - 这是他的问题。 –

回答

0

这是怎么回事?

mascota = perro() 
ejemplo = mascota.coqueta(5,5) 
mascota.otro_perro(ejemplo) 

,或者

mascota = perro() 
mascota.otro_perro(mascota.coqueta(5,5)) 
+0

你好,谢谢你的回答,这只是一个例子,我会做一个大数学calc,我想在第二个函数中使用结果。 –

0

成全它的perro类的属性。那真的是整点类,模块化,组织和封装数据,而不必使用global的到处都是:

class perro: 
    def coqueta(self, num1, num2): 
     self.num1 = num1 
     self.num2 = num2 
     self._otro_perro = self.num1 + self.num2 

    def otro_perro(self): 
     print self._otro_perro 




mascota = perro() 
mascota.coqueta(5,5) 
mascota.otro_perro() # will print the value of self._orto_perro 

orto_perro之前添加额外的下划线,因为你已经使用的名称为您的方法。作为一个无关的方面说明,类名称是一个在Python中大写的gereral。所以perro会变成Perro

+0

但它不起作用,它显示我一个错误:S –

2

要么将​​方法coqueta()的返回值转换为otro_perro(),要么将otro_perro()直接调用coqueta()。您的代码表明,你希望做的第一,所以这样写:

class Perro: 
    def coqueta(self, num1, num2): 
     result = big_maths_calculation(num1, num2) 
     return result 

    def otro_perro(self, coqueta): 
     print coqueta 

mascota = Perro() 
ejemplo = mascota.coqueta(5, 5) 
mascota.otro_perro(ejemplo) 

或者,你可以调用coqueta()otro_perro()

def otro_perro(self, num1, num2): 
     print self.coqueta(num1, num2) 

但需要你传递值num1num2分成otro_perro()

也许num1num2可能被认为是属于Perro类的属性?

class Perro: 
    def __init__(self, num1, num2): 
     self.num1 = num1 
     self.num2 = num2 

    def coqueta(self): 
     result = big_maths_calculation(self.num1, self.num2) 
     return result 

    def otro_perro(self, coqueta): 
     print self.coqueta() # N.B. method call 

或者另一种可能是缓存的“大计算”的结果:

class Perro: 
    def __init__(self, num1, num2): 
     self.num1 = num1 
     self.num2 = num2 
     self.result = None 

    def coqueta(self): 
     if self.result is None: 
      self.result = big_maths_calculation(self.num1, self.num2) 
     return self.result 

    def otro_perro(self, coqueta): 
     print self.coqueta() # N.B. method call 

现在只需执行一次昂贵的计算在这种情况下,当你创建类,你可以指定它们需要时将其结果存储起来供以后使用,而无需重新计算。