From: "Florian Groß" Date: 2005-04-20T00:49:10+09:00 Subject: Re: [EVALUATION] - E03c - The Ruby Object Model (Revised Documentation) Carlos wrote: > We agree until now? "person.id()" will try to find "Person#id", then > "Object#id". "Person.attr_accessor" will try to find > "(Person)#attr_accessor", then "Class#attr_accessor", then > "Module#attr_accessor". First go to the right, then up until you find it. And Ruby describes (Person)#attr_accessor as Person.attr_accessor: class Person; end def Person.attr_accessor() end Person.method(:attr_accessor) # => # Person.method(:new) # => # [].method(:inject) # => # I think this notational difference helps in figuring out where a method truly comes from. I think your explanation was a good one, even though in practice you can ignore the fact that meta classes are implemented by inserting the meta class before the physical class in the inheritance chain and that an object is thus an instance of its meta class.