I have a class, where I want one class method be used only by other class **and instance** methods, but not from other classes - with other words, I would like to have a *private class method*. After a bit of researching, I came up with the following approach:

```
class Example
  def initialize
  end  
  def f
    # My private class method will be called here
    self.class.send(:g)
  end
  # g is going to be a private class method
  def self.g
    puts 4711
  end
  private_class_method :g
end

```

This works so far; calling `Example.new.f` invokes `g` and calling `Example.g` throws an exception, as required. 

What is awkward, is the way to call g (`self.class.send(:g)`). Is there a nicer way to do it? Or is it in general a bad idea to make a class method private, when it needs to be called by an instance method?