Мой сеанс IRB:
1.9.2p290 :001 > class MyClass
1.9.2p290 :002?> def initialize(name = nil, age = nil, weight = nil)
1.9.2p290 :003?> @name = name
1.9.2p290 :004?> @age = age
1.9.2p290 :005?> @weight = weight
1.9.2p290 :006?> end
1.9.2p290 :007?> end
=> nil
1.9.2p290 :010 > p1 = MyClass.new("Joe", 12, 135)
=> #<MyClass:0x00000002226a08 @name="Joe", @age=12, @weight=135>
1.9.2p290 :011 > p2 = MyClass.new("Jack", 29, 200)
=> #<MyClass:0x00000002212b98 @name="Jack", @age=29, @weight=200>
1.9.2p290 :013 > p3 = MyClass.new("Jill", 44)
=> #<MyClass:0x000000021c9600 @name="Jill", @age=44, @weight=nil>
1.9.2p290 :014 > ap p1
#<MyClass:0x02226a08
@age = 12,
@name = "Joe",
@weight = 135
>
=> #<MyClass:0x00000002226a08 @name="Joe", @age=12, @weight=135>
1.9.2p290 :015 > ap p2
#<MyClass:0x02212b98
@age = 29,
@name = "Jack",
@weight = 200
>
=> #<MyClass:0x00000002212b98 @name="Jack", @age=29, @weight=200>
1.9.2p290 :016 > ap p3
#<MyClass:0x021c9600
@age = 44,
@name = "Jill",
@weight = nil
>
=> #<MyClass:0x000000021c9600 @name="Jill", @age=44, @weight=nil>
Как видите, глобального переопределения @weight
.
нет.