# Object to which a meta class belongs?

**URL:** <https://www.ruby-forum.com/t/object-to-which-a-meta-class-belongs/99681>\
**Category:** Ruby\
**Created:** [July 24, 2006, 11:07pm UTC](https://www.ruby-forum.com/t/object-to-which-a-meta-class-belongs/99681 "2006-07-24T23:07:10Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![erikveen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/59ef9b/32.png) [@erikveen](https://www.ruby-forum.com/u/erikveen)\
**Post date:** [July 24, 2006, 11:07pm UTC](https://www.ruby-forum.com/t/object-to-which-a-meta-class-belongs/99681/1 "2006-07-24T23:07:10Z")

</div>

If a singleton class belongs to an object, it should be  
possible to determine to which object it belongs. Is that  
possible?

I came up with the code below, but it might not be very fast.

Thanks.

gegroet,  
Erik V. - [http://www.erikveen.dds.nl/](http://www.erikveen.dds.nl/)

* * *

class Object  
def metaclass  
obj = self

```
 class << self
   self
 end.instance_eval do
   instance_eval <<-END
     def belongs_to
       ObjectSpace._id2ref(#{obj. __id__ })
     end
   END

   self
 end

```

end  
end

a = “TEST”

p a. **id**  
p a.metaclass.belongs\_to. **id**

---

<div class="post-metadata">

**Author:** ![erikveen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/59ef9b/32.png) [@erikveen](https://www.ruby-forum.com/u/erikveen)\
**Post date:** [July 25, 2006, 1:21am UTC](https://www.ruby-forum.com/t/object-to-which-a-meta-class-belongs/99681/2 "2006-07-25T01:21:45Z")

</div>

On 7/24/06, Erik V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> def belongs_to
> 
> ```
> 
> p a. **id**  
> p a.metaclass.belongs\_to. **id**
> 
> * * *

How about this?

class Object  
def singleton\_of  
ObjectSpace.each\_object(self) do |obj|  
return obj  
end  
end  
end

Regards,  
Sean

---

<div class="post-metadata">

**Author:** ![erikveen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/59ef9b/32.png) [@erikveen](https://www.ruby-forum.com/u/erikveen)\
**Post date:** [July 25, 2006, 8:19am UTC](https://www.ruby-forum.com/t/object-to-which-a-meta-class-belongs/99681/3 "2006-07-25T08:19:26Z")

</div>

It does work work, but…

… It’s even slower. Much slower. ;]

Thanks.

gegroet,  
Erik V. - [http://www.erikveen.dds.nl/](http://www.erikveen.dds.nl/)

* * *

```
   CPU ELAPSED COUNT CPU/COUNT LABEL

```

5.850000 6.708499 1 5.850000 :singleton\_of  
0.560000 1.097820 1 0.560000 :belongs\_to

* * *

class Module  
def singleton\_of  
res = nil  
ObjectSpace.each\_object(self) do |obj|  
res = obj  
end  
res  
end  
end

---

<div class="post-metadata">

**Author:** ![erikveen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/59ef9b/32.png) [@erikveen](https://www.ruby-forum.com/u/erikveen)\
**Post date:** [July 25, 2006, 2:31pm UTC](https://www.ruby-forum.com/t/object-to-which-a-meta-class-belongs/99681/4 "2006-07-25T14:31:56Z")

</div>

On 7/25/06, Erik V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> It does work work, but…
> 
> … It’s even slower. Much slower. ;]
> 
> Thanks.
> 
> gegroet,  
> Erik V. - [http://www.erikveen.dds.nl/](http://www.erikveen.dds.nl/)

Whoops! Knew I should have benchmarked it. 🙂  
ObjectSpace.each\_object really is a sledgehammer…

Regards,  
Sean
