The reference class definition can be queried for defined fields, e.g.,
getRefClass("A")$fields()
a = A()
a$getRefClass()$fields()
so maybe
A = setRefClass("A", fields=c(var1="list", var2="character"),
methods=list(getFields=function(values) {
flds = names(getRefClass()$fields())
if (!missing(values))
flds = flds[flds %in% values]
result = setNames(vector("list", length(flds)), flds)
for (fld in flds)
result[[fld]] = .self[[fld]]
result
}))
with
> A(var2=letters[1:5])$getFields("var2")
$var2
[1] "a" "b" "c" "d" "e"