List methods only for specific class

hello folks!

Is there a way to list methods only for specific class, i.e., not
inherited?

Thank you!

On Mon, Jun 15, 2009 at 12:38 AM, Le Sa [email protected] wrote:

hello folks!

Is there a way to list methods only for specific class, i.e., not
inherited?

Thank you!

Posted via http://www.ruby-forum.com/.

object.public_methods(false)

Hope this helps!

On 15.06.2009 07:38, Le Sa wrote:

Is there a way to list methods only for specific class, i.e., not
inherited?

robert

No problem!
instance_methods(false) is fine, because I won’t be able to use private
methods anyway xD

Le Sa wrote:

I would like to list ms1 and ms2, but thanks for the help!

I would like to list ms1 and ms2, but thanks for the help!

class Person
def mp1() end
end

class Student < Person
def ms1() end
def ms2() end

private :ms2
end

Student.public_methods(false).each {|m|puts m}
puts “************\n”
Student.instance_methods(false).each{|m|puts m}
=begin
OUTPUT IS:

yaml_tag_subclasses?
allocate
to_yaml
superclass
new


ms1
=end

On Mon, Jun 15, 2009 at 10:27 AM, Le Sa [email protected] wrote:

private :ms2
to_yaml
superclass
new


ms1
=end

Posted via http://www.ruby-forum.com/.

Try:
Student.new.public_methods(false) + Student.new.private_methods(false)
=> [“ms1”, “ms2”]

2009/6/15 Daniel R. [email protected]:

Try:
Student.new.public_methods(false) + Student.new.private_methods(false)
=> [“ms1”, “ms2”]

Why do you folks create instances? You can do this as well:

cl = any_class
cl.instance_methods(false) - cl.private_instance_methods

Kind regards

robert

On Jun 16, 2009, at 12:04 AM, Robert K. wrote:

cl.instance_methods(false) - cl.private_instance_methods

Kind regards

robert

Often, I’m most interested in methods unique to a given class and not
those inherited from, say, Object:

(Array.instance_methods - Array.private_instance_methods -
Object.public_methods).sort

And I sort them for easier reference. Don’t know if this adds any
information…

Steve R. wrote:

Often, I’m most interested in methods unique to a given class and not
those inherited from, say, Object:

(Array.instance_methods - Array.private_instance_methods -
Object.public_methods).sort

And I sort them for easier reference. Don’t know if this adds any
information…

If you really want unique to the class, and the class may have a more
complex object hieararchy than just inheriting from Object, why not
something like:

(MyClass.methods - MyClass.superclass.methods)

I think that’ll work, although how included modules in MyClass are
treated should be tested experimentally. I think it’ll still work cause
of the magic anonymous singleton class thing ruby uses for module
mix-ins and such.

The trick in both Steve’s and my attempt is the really useful ‘-’
operator/method on Arrays, which does array difference. So useful! See
also ‘&’ for array intersection. Can save you a lot of hacky code if you
remember they’re there.

Jonathan

On Mon, Jun 15, 2009 at 5:27 PM, Le Sa[email protected] wrote:

private :ms2
end

The closest I have to offer is this:

Student.new.methods - Object.instance_methods
=> [“ms1”, “mp1”]

so many replies hehe. you are amazing!!!

thank you all!!!