有没有办法在其他函数中访问函数的返回值?
可能下一个代码会解释我想要做的更多。
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
如何在第二个函数(def
)中返回要打印的第一个coqueta
(otro_perro
)?
答案 0 :(得分: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)
但这也要求您同时将num1
和num2
的值传递到otro_perro()
。
或许num1
和num2
可以被视为班级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
现在昂贵的计算只在需要时执行一次,其结果存储起来供以后使用,无需重新计算。
答案 1 :(得分:0)
这有什么不对吗?
mascota = perro()
ejemplo = mascota.coqueta(5,5)
mascota.otro_perro(ejemplo)
或,
mascota = perro()
mascota.otro_perro(mascota.coqueta(5,5))
答案 2 :(得分:0)
只需将其设为csv<-data.frame(c(100,50,100),c(1,1,1),c(NA,12,NA))
csv$complete<-apply(csv,1,function(x){x[1]==100 && x[2]==1 && complete.cases(x)}) #check that column_1==100, and column_2=1, and no missing values in the row
csv$complete2<-apply(csv,1,function(x){x[1]==100 && x[2]==1 && anyNA(x, recursive = FALSE)})
> csv
c.100..50..100. c.1..1..1. c.NA..12..NA. complete complete2
1 100 1 NA TRUE TRUE
2 50 1 12 FALSE FALSE
3 100 1 NA TRUE TRUE
类的属性即可。这真的是课堂的重点,模块化,组织和封装你的数据,而不是在任何地方使用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
之前添加了额外的下划线,因为您已经为该方法使用了该名称。作为一个不相关的旁注,类命名为Python中的大写字母。因此orto_perro
将成为perro
。