我想这样编码
MyClass(variable_1).Method_1(variable_2).Method_2()
其中方法_1给出两个值: Dataframe 和numpy浮点;我想当你调用方法2时,把方法1给出的值画出来调用方法_1时,如何将其值与方法_2连接起来,或者如何实现?我有dataframe和graph的代码,但无法链接它们
nimxete21#
你基本上需要回来 self 允许链接呼叫。以下是一个例子:
self
class MyClass(): def __init__(self, var): self.var = var self.var2 = "" def method1(self,var2): self.var2 = var2 return self def method2(self): print(self.var, self.var2)
它是这样工作的
>>> MyClass('foo').method1('bar').method2() foo bar
您可以根据需要调整此模式。但是数据必须存储在类中,因为您需要返回 self 以允许链接这些方法。所以 self.var2 可能是您的 Dataframe 和 method2 我会画出来的。根据你的需要,你也可以考虑不返回 self 而是提供所需方法的不同类的示例。----更新----考虑到你答案中的代码,它可以这样工作。因为我没有你的数据,所以我没有测试它。它可能仍然有错误。
self.var2
method2
class Resumidor(): def __init__(self,datos,perspectiva='horario',*args): self.datos=datos self.perspectiva=perspectiva self._k = None def contar_diasxhora(self): k=np.zeros((24,1)) for i in range(0,24): k[i,0]=np.count_nonzero(self.datos.iloc[i,:]) k2=k[k>0].mean() k=pd.DataFrame(data=k,columns=['dias promedio por hora']) self._k = (k, k2) return self def gbarrah_horas(self,tipo): if not self._k: return k, k2 = self._k #grafica plt.rcdefaults() fig, ax = plt.subplots() y_pos = np.arange(24) ax.barh(y_pos,k.values[:,0],color='red') ax.set_yticks(y_pos) ax.set_ylabel('Hora') ax.set_xlabel('Deficit [MW]') ax.set_title('Maximo deficit por hora') plt.show()
h22fl7wq2#
class Resumidor(): def __init__(self,datos,perspectiva='horario',*args): self.datos=datos self.perspectiva=perspectiva def contar_diasxhora(self): k=np.zeros((24,1)) for i in range(0,24): k[i,0]=np.count_nonzero(self.datos.iloc[i,:]) k2=k[k>0].mean() k=pd.DataFrame(data=k,columns=['dias promedio por hora']) return k,k2 def gbarrah_horas(self,tipo): #que se quiere graficar: contar, promedio, maximo if tipo=='contar': k,k2=self.contar_diasxhora() elif tipo=='promedio': k,k2=self.promedio_deficitxhoras() elif tipo=='maximo': k,k2=self.deficit_maximoxhoras() #grafica plt.rcdefaults() fig, ax = plt.subplots() y_pos = np.arange(24) ax.barh(y_pos,k.values[:,0],color='red') ax.set_yticks(y_pos) ax.set_ylabel('Hora') ax.set_xlabel('Deficit [MW]') ax.set_title('Maximo deficit por hora') plt.show()
我想这样称呼:resumidor(赤字);De赤_bca是一个 Dataframe ,我在gbarrah_horas()中写“tipo”来使用resumidor(De赤_bca).gbarrah_horas(“contar”)这样的函数,其中调用contar函数,但我想要resumidor(De赤_bca.contar_diasxhoras().gbarrah_horas()
2条答案
按热度按时间nimxete21#
你基本上需要回来
self
允许链接呼叫。以下是一个例子:它是这样工作的
您可以根据需要调整此模式。但是数据必须存储在类中,因为您需要返回
self
以允许链接这些方法。所以self.var2
可能是您的 Dataframe 和method2
我会画出来的。根据你的需要,你也可以考虑不返回
self
而是提供所需方法的不同类的示例。----更新----
考虑到你答案中的代码,它可以这样工作。因为我没有你的数据,所以我没有测试它。它可能仍然有错误。
h22fl7wq2#
我想这样称呼:resumidor(赤字);De赤_bca是一个 Dataframe ,我在gbarrah_horas()中写“tipo”来使用resumidor(De赤_bca).gbarrah_horas(“contar”)这样的函数,其中调用contar函数,但我想要resumidor(De赤_bca.contar_diasxhoras().gbarrah_horas()