Shared parameter?

I asked a similar question before here: Can a paramterized class react to parameters outside of itself?

You can pass parameterized classes (like a dataframe) into other parameterized classes (some random component) and react to them.

import param
import numpy as np
import pandas as pd

class Data(param.Parameterized):
    df = param.DataFrame(df)

class Component1(param.Parameterized):
    data = param.Parameterized()

    @param.depends('data.df')
    def view(self):
        return self.data.df.sum().sum()
        
class Component2(param.Parameterized):
    data = param.Parameterized()

    @param.depends('data.df')
    def view(self):
        return len(self.data.df)
        
data = Data(df = pd.DataFrame(np.random.rand(10,10)))
# Have components that take the dataframe as a parameter
c1 = Component1(data=data)
c2 = Component2(data=data)

# Components have access to dataframe
print(c1.view(), c2.view())

#Update dataframe
data.df = pd.DataFrame(np.random.rand(100,100))

# Have it show up in all other components
print(c1.view(), c2.view())
1 Like