As the itcl::class is a [tcl] command, you can insert code into the [class] declaration. It is common C++ practice to have set/get methods to protect the variables in an object from manipulation outside the class. This sample class creates a set of methods to set and enquire a list of protected variables. ====== console show package require Itcl itcl::class tclass { foreach v {time distance} { method get$v {} [subst -nocommands { return [subst $$v] }] method set$v nuval [subst -nocommands { set $v \$nuval } ] protected variable $v "Var $v" } constructor {} { puts "Constructs $this" } method speed {} { return [expr {[getdistance]/[gettime]}]} } tclass a a setdistance 2 a settime 3.0 puts "Travelled [a getdistance] taking Time [a gettime] so speed is [a speed]" ====== The variable list can be arbitrarily long of course when this would save considerable typing and validation effort. The code can include any of the [itcl::class] constructs. If you wish the variable list to be a variable in the class then it must be a [common] variable so that it is available at class creation time: ====== itcl::class tclas2 { common vars {time distance power} foreach v $vars { method get$v {} [subst -nocommands { return [subst $$v] }] method set$v nuval [subst -nocommands { set $v \$nuval } ] protected variable $v "Var $v" } constructor {} { puts "Constructs tclas2 $this" } method showVarsandMethods {} { puts "Variables with get/set methods exist for: $vars.\nMethods are: [info function]" } } tclas2 b b showVarsandMethods ====== This example shows that setpower, getpower, set/getdistance and set/gettime are all methods of the class tclas2 even though the functions are not explicitly declared. Entered by [GWM]. [GWM] an improvement places the make get and set methods in a proc 'makegetset' which can be referred to by all classes in a program. ====== proc makegetset {args} { foreach {vn val} $args { uplevel 1 public variable $vn $val uplevel 1 public method set$vn \{v\} \{[subst -nocommand {set $vn \$v}] \} uplevel 1 public method get$vn \{\} \{[subst -nocommand {return $$vn}]\} } } itcl::class BarBar { eval makegetset {foo 9 foot 2 frob 6} constructor {} {} } set o [BarBar #auto] puts "In $o foo is [$o getfoo] foot is [$o getfoot] and frob [$o getfrob]" $o setfoo 355 $o getfoo ====== <> Itcl