ruby - 类声明是 ruby 中的洗眼剂吗?一切真的都是面向对象的吗?

标签 ruby class-method

class Person
  def name
   puts "Dave"
  end
end

puts Person.object_id

访问方法只有两种方式:

1) Someclass.method 如果是类方法。 #其中 Someclass 是一个类。

2) 和 Object.method(当被访问的方法是在类内部声明的常规方法时)。 Object 是类的实例。

它遵循 Object.method 模式,那么这是否意味着 Person 类确实是一个对象?

或者object_id是一个类方法?后者似乎不太可能,因为类方法不能继承到实例中。但是当我们做这样的事情时:

a = Person.new
a.methods.include?("object_id") # this produces true

a 是 Person 类的实例,因此 object_id 不能是类方法。

最佳答案

是的,Ruby 类是对象:

>> String.is_a? Object
=> true
>> String.methods.count
=> 131
>> Fixnum.methods.count
=> 128

关于ruby - 类声明是 ruby 中的洗眼剂吗?一切真的都是面向对象的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7250523/

相关文章:

ruby-on-rails - 使用 CanCan 通过父关联授权子对象

ruby - 计算 Ruby 中的第 95 个百分位数?

ios - 从类方法访问 UINavigationController

python - classmethod 和 instancemethod 同名

javascript - 将 Post 请求发送回 Sinatra 路由

ruby-on-rails - 如何在 ActiveRecord 中为每个唯一列值获取 2 条或更多记录?

mysql - 实现登录速度检查

iOS 在 block 中返回 bool 值

python - Python 中的 @staticmethod 和 @classmethod

python-3.x - 为什么 __qualname__ 在 @classmethod 中的工作方式与在元类中不同