Hi Maksym!
namespace eval testNameSpace {
aClass create a_obj1 a_obj1 print bClass create b_obj1 -pr a_obj1 }
tl;dr
You need to pass a fully-qualified object (command) name as an argument:
namespace eval testNameSpace { set a_obj1_fq [aClass create a_obj1] a_obj1 print bClass new -pr [namespace which a_obj1] bClass new -pr $a_obj1_fq }
For this purpose, you may capture the fully-qualified object name as the result of the create/new call via a variable (a_obj1_fq); or, you may use [namespace which] to capture the namespace context.
In Tcl, and Tk, the call site is made responsible for resolving or capturing the namespace context; and not the callee. Think of [namespace code ...] and friends. In general, for the callee, there will be ambiguity when reconstructing the original call site, in presence of command traces or different [namespace path ...] settings (or, filters and mixins in XOTcl/ NX); or combinations thereof.
HTH, and Happy New Year to you too,
Stefan