I would like to have a Julia structure with data and parameters contained with it, to be used with various functions. E.g., I start with data frame of numbers, but many functions use it as a matrix and also need to know its dimensions. In python I would use something like:
class my_class(object):
    def __init__(self, df):
        X = df.to_numpy()
        self.n, self.m = X.shape
        row_names = df.index.tolist()
        col_names = df.columns.tolist()
Foo = my_class(df)
What poses a difficulty is whether operations .to_numpy(), .shape, etc. can be performed in the Julia structure or whether beforehand. Or perhaps this necessitates using a mutable structure?
At my current level of knowledge I would do something like this:
struct MyClass
    df::DataFrame
    X::Matrix{Float64}
    n::Int64
    m::Int64
    row_names::Vector{String}
    col_names::Vector{String}
end
X = Matrix{Float64}(df[:,begin+1:end])
n, m = size(X)
row_names = df[:,begin]
col_names = names(SAT[:,begin+1:end])
Foo = MyClass(df, X, n, m, row_names, col_names)
Remark: thinking of it, I could probably wrap the code above in a function, which returns the initialized structure Foo. But it seems like a convoluted way of doing it.