将method的值用于下一个方法

vptzau2j  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(478)

我想这样编码

  1. MyClass(variable_1).Method_1(variable_2).Method_2()

其中方法_1给出两个值: Dataframe 和numpy浮点;我想当你调用方法2时,把方法1给出的值画出来
调用方法_1时,如何将其值与方法_2连接起来,或者如何实现?我有dataframe和graph的代码,但无法链接它们

nimxete2

nimxete21#

你基本上需要回来 self 允许链接呼叫。以下是一个例子:

  1. class MyClass():
  2. def __init__(self, var):
  3. self.var = var
  4. self.var2 = ""
  5. def method1(self,var2):
  6. self.var2 = var2
  7. return self
  8. def method2(self):
  9. print(self.var, self.var2)

它是这样工作的

  1. >>> MyClass('foo').method1('bar').method2()
  2. foo bar

您可以根据需要调整此模式。但是数据必须存储在类中,因为您需要返回 self 以允许链接这些方法。所以 self.var2 可能是您的 Dataframe 和 method2 我会画出来的。
根据你的需要,你也可以考虑不返回 self 而是提供所需方法的不同类的示例。
----更新----
考虑到你答案中的代码,它可以这样工作。因为我没有你的数据,所以我没有测试它。它可能仍然有错误。

  1. class Resumidor():
  2. def __init__(self,datos,perspectiva='horario',*args):
  3. self.datos=datos
  4. self.perspectiva=perspectiva
  5. self._k = None
  6. def contar_diasxhora(self):
  7. k=np.zeros((24,1))
  8. for i in range(0,24):
  9. k[i,0]=np.count_nonzero(self.datos.iloc[i,:])
  10. k2=k[k>0].mean()
  11. k=pd.DataFrame(data=k,columns=['dias promedio por hora'])
  12. self._k = (k, k2)
  13. return self
  14. def gbarrah_horas(self,tipo):
  15. if not self._k:
  16. return
  17. k, k2 = self._k
  18. #grafica
  19. plt.rcdefaults()
  20. fig, ax = plt.subplots()
  21. y_pos = np.arange(24)
  22. ax.barh(y_pos,k.values[:,0],color='red')
  23. ax.set_yticks(y_pos)
  24. ax.set_ylabel('Hora')
  25. ax.set_xlabel('Deficit [MW]')
  26. ax.set_title('Maximo deficit por hora')
  27. plt.show()
展开查看全部
h22fl7wq

h22fl7wq2#

  1. class Resumidor():
  2. def __init__(self,datos,perspectiva='horario',*args):
  3. self.datos=datos
  4. self.perspectiva=perspectiva
  5. def contar_diasxhora(self):
  6. k=np.zeros((24,1))
  7. for i in range(0,24):
  8. k[i,0]=np.count_nonzero(self.datos.iloc[i,:])
  9. k2=k[k>0].mean()
  10. k=pd.DataFrame(data=k,columns=['dias promedio por hora'])
  11. return k,k2
  12. def gbarrah_horas(self,tipo):
  13. #que se quiere graficar: contar, promedio, maximo
  14. if tipo=='contar':
  15. k,k2=self.contar_diasxhora()
  16. elif tipo=='promedio':
  17. k,k2=self.promedio_deficitxhoras()
  18. elif tipo=='maximo':
  19. k,k2=self.deficit_maximoxhoras()
  20. #grafica
  21. plt.rcdefaults()
  22. fig, ax = plt.subplots()
  23. y_pos = np.arange(24)
  24. ax.barh(y_pos,k.values[:,0],color='red')
  25. ax.set_yticks(y_pos)
  26. ax.set_ylabel('Hora')
  27. ax.set_xlabel('Deficit [MW]')
  28. ax.set_title('Maximo deficit por hora')
  29. plt.show()

我想这样称呼:resumidor(赤字);De赤_bca是一个 Dataframe ,我在gbarrah_horas()中写“tipo”来使用resumidor(De赤_bca).gbarrah_horas(“contar”)这样的函数,其中调用contar函数,但我想要resumidor(De赤_bca.contar_diasxhoras().gbarrah_horas()

展开查看全部

相关问题