Я использую Python для повседневного программирования и прохожу Ruby сейчас.
Я могу сделать что-то подобное в Python, где экземпляр класса может получить доступ к переменной, определенной внутри класса, и я могу вызвать переменную с моим именем класса.
>>> class Animal:
... name = "Python"
...
>>>
>>> a = Animal()
>>> a.name
'Python'
>>> Animal.name
'Python'
Тогда как в Ruby я получаю сообщение об ошибке, почему это так.
2.4.2 :033 > class Animal
2.4.2 :034?> leg = 4
2.4.2 :035?> @@hand = 2
2.4.2 :036?> @brain = 1
2.4.2 :037?> end
=> 1
2.4.2 :038 > a = Animal.new
=> #<Animal:0x0000000000e4d2e8>
2.4.2 :039 > a.leg
NoMethodError: undefined method `leg' for #<Animal:0x0000000000e4d2e8>
from (irb):39
from /home/cyborg/.rvm/rubies/ruby-2.4.2/bin/irb:11:in `<main>'
2.4.2 :040 > a.hand
NoMethodError: undefined method `hand' for #<Animal:0x0000000000e4d2e8>
from (irb):40
from /home/cyborg/.rvm/rubies/ruby-2.4.2/bin/irb:11:in `<main>'
2.4.2 :041 > a.brain
NoMethodError: undefined method `brain' for #<Animal:0x0000000000e4d2e8>
from (irb):41
from /home/cyborg/.rvm/rubies/ruby-2.4.2/bin/irb:11:in `<main>'
2.4.2 :047 > Animal.hand
NoMethodError: undefined method `hand' for Animal:Class
from (irb):47
from /home/cyborg/.rvm/rubies/ruby-2.4.2/bin/irb:11:in `<main>'