次の2つのRubyコードとPythonコードは、クラスメソッドの例です。なぜPythonはオブジェクトを通してクラスメソッドにアクセスできますが、ルビはアクセスできません。PythonとRubyのクラスメソッド
Pythonコード
class student:
b = 78
@classmethod
def foo(var):
return var.b
z = student()
print z.foo() # => 78
ルビーコード
class Student
@@b = 78
def self.foo
@@b
end
end
z = Student.new
puts z.foo # => -e:20:in `<main>': undefined method `foo' for #<Student:0x007ff4f98ab9e8> (NoMethodError)
あなたの質問は「実際に異なる言語はなぜ異なっているのですか?彼らは異なる言語なので... ...? – kindall
@kindall実際には、特定の理由があるかどうかを知りたいだけです –
ルビーでは 'puts z.class.foo'を使用できます – knut