将method的值用于下一个方法

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

我想这样编码

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

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

nimxete2

nimxete21#

你基本上需要回来 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 而是提供所需方法的不同类的示例。
----更新----
考虑到你答案中的代码,它可以这样工作。因为我没有你的数据,所以我没有测试它。它可能仍然有错误。

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()
h22fl7wq

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()

相关问题