require 'traits'
#
# a depth first search path is used to find defaults 
#
class C
  has 'a' => 42 
end
class K < C; end

k = K::new
p k.a 

#
# once assigned this is short-circuited
#
k.a = 'forty-two'
p k.a 
