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