# The dragon has-a traits object

**URL:** <https://www.ruby-forum.com/t/the-dragon-has-a-traits-object/120123>\
**Category:** Ruby\
**Created:** [November 13, 2007, 10:58pm UTC](https://www.ruby-forum.com/t/the-dragon-has-a-traits-object/120123 "2007-11-13T22:58:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Thufir](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/ee7513/32.png) [@Thufir](https://www.ruby-forum.com/u/Thufir)\
**Post date:** [November 13, 2007, 10:58pm UTC](https://www.ruby-forum.com/t/the-dragon-has-a-traits-object/120123/1 "2007-11-13T22:58:23Z")

</div>

Is this the “correct” way to change the dragon’s traits?

C:\code\>  
C:\code\>  
C:\code\>composition.rb  
#Dragon:0x277057c

C:\code\>  
C:\code\>  
C:\code\>dir  
Volume in drive C has no label.  
Volume Serial Number is 0491-510F

Directory of C:\code

11/13/2007 01:36 PM .  
11/13/2007 01:36 PM …  
11/13/2007 01:48 PM 81 composition.rb  
11/13/2007 01:49 PM 156 Creature.rb  
11/13/2007 01:46 PM 117 Dragon.rb  
11/13/2007 01:47 PM 246 Traits.rb  
4 File(s) 600 bytes  
2 Dir(s) 30,947,139,584 bytes free

C:\code\>  
C:\code\>type composition.rb  
require ‘Dragon’

drgn = Dragon.new

drgn.traits.life = 1340

puts drgn  
C:\code\>  
C:\code\>type Dragon.rb  
require ‘Creature’

class Dragon \< Creature

def initialize ()  
super  
end

def inspect ()  
super  
end

end  
C:\code\>  
C:\code\>type Creature.rb  
require ‘Traits’

class Creature

attr\_accessor :traits

def initialize ()  
@traits=Traits.new  
end

def inspect ()  
@traits.inspect  
end

end  
C:\code\>  
C:\code\>type Traits.rb  
class Traits

attr\_accessor :life, :strength, :charisma, :weapon

def initialize ()  
@life = 0  
@strength = 0  
@charisma = 0  
@weapon = 0  
end

def inspect ()  
puts @life  
puts @strength  
puts @charisma  
puts @weapon  
end

end  
C:\code\>  
C:\code\>

thanks,

Thufir
