【发布时间】:2018-10-22 18:03:33
【问题描述】:
我在日常编程中使用 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>'
【问题讨论】:
-
leg 是一个无法从外部访问的局部变量。试试
puts a.handputs a.brain -
@Attersson 同样的错误
-
@bunji 谢谢,得到澄清
标签: python ruby python-3.x python-2.7