If you want to do it at the class level instead of the instance level,
it looks like what is done quite a lot in rails

for example in active record :

class Toto<<ActiveRecord::Base
end

would use totos as table name by default (define by AR) but you can
chage it to something else like this :

class Toto<<ActiveRecord::Base
  set_table_name "mice"
end

now it will use mice instead of toto

if this is what you are trying to do, have a look at rails
implementation, which relies on rails define_attr_method :
http://railsmanual.org/class/ActiveRecord::Base/define_attr_method

hope this helps

On 10/27/06, bachase / gmail.com <bachase / gmail.com> wrote:
> I'll say thanks to both of you.  I think I was confused on all
> accounts, but the biggest issue is probably that I thought the
> @favorites was the same for both classes.  I guess I will need to
> restructure things then.  Basically, I want the base class to provide
> some default settings that a child class could override using a class
> method.  Apparently, I am unclear on the way to do so.
>
> matt neuburg wrote:
> > Rick DeNatale <rick.denatale / gmail.com> wrote:
> >
> > > On 10/26/06, matt neuburg <matt / tidbits.com> wrote:
> > > > bachase / gmail.com <bachase / gmail.com> wrote:
> > > >
> > > > > Consider:
> > > > >
> > > > > class BigGuy
> > > > >    def initialize
> > > > >       @favorites = ["a","b","c"]
> > > > >    end
> > > > >
> > > > >    class << self
> > > > >      def display_favs
> > > > >       class_eval "p @favorites"
> > > > >      end
> > > > >    end
> > > > > end
> > > > >
> > > > > class LittleGuy < BigGuy
> > > > >      display_favs
> > > > > end
> > > > >
> > > > > Why does this display "nil"?  I expected the initialize of BigGuy to
> > > > > occur prior to invoking display_favs.  Any other construction I should
> > > > > be using to get my desire behavior of the constructor of the base class
> > > > > getting called prior to singleton methods called from the child class?
> > > >
> > > > "Initialize" is called when the class is instantiated (i.e. with new).
> > > > You are never instantiating this class, so "initialize" is never called.
> > >
> > > True, but kind of beside the point.
> >
> > Perhaps it's a matter of pedagogy. What *is* "the point"? That depends
> > on where one thinks the OP has ultimately gone wrong. The OP might have
> > any of several misconceptions (it is hard to be certain); the OP might
> > not be aware:
> >
> > (1) that initialize is called at instantiation time.
> >
> > (2) that a class and an instance of that class are different things.
> >
> > (3) that the singleton method is a class method.
> >
> > (4) that the @favorites referred to in the class method is not the
> > @favorites referred to in "initialize".
> >
> > Each of us is trying to teach, so each of us, like a good teacher, made
> > a guess about where the heart of the OP's misunderstanding might lie. I
> > guessed (1), with a little bit of (2) thrown in. You are leaning more
> > toward (3) and (4). Your guess is reasonable, but my guess is not
> > unreasonable, especially since the OP explicitly said: "I expected the
> > initialize ... to occur". I spoke to that issue, showing why that
> > expectation was wrong. So what I said is hardly "beside the point".
> >
> > m.
> >
> > > The initialize method if and when
> > > it is called will set the instance variable @favorites in a new
> > > INSTANCE of BigGuy.
> > >
> > > class BigGuy
> > >  ...
> > >   class << self
> > >     def display_favs
> > >      class_eval "p @favorites"
> > >     end
> > >   end
> > > end
> > >
> > > This makes display_favs a class method of BigGuy.
> > > In the method display_favs self is the class object BigGuy.
> > >
> > > so
> > >    class_eval "p @favorites"
> > > is the same as
> > >    BigGuy.class_eval "p @favorites"
> > >
> > > which is printing a class instance variable of BigGuy which doesn't exist.
> > >
> > > And...
> > >
> > > class LittleGuy < BigGuy
> > >     display_favs
> > > end
> > >
> > > inside this class definition, self is LittleGuy so
> > >
> > >     display_favs
> > > is equivalent to:
> > >     LittleGuy.display_favs
> > >
> > > which executes
> > >    BigGuy::display_favs
> > >
> > > by inheritance
> > >
> > > which prints the uninitialized class instance variable @favorites.
> > >
> > > Note also that the class instance variable @favorite in BigGuy is
> > > different from the clas instance variable @favorite in LittleGuy,
> > > although neither one is initialized.
> >
> >
> > --
> > matt neuburg, phd = matt / tidbits.com, http://www.tidbits.com/matt/
> > Tiger - http://www.takecontrolbooks.com/tiger-customizing.html
> > AppleScript - http://www.amazon.com/gp/product/0596102119
> > Read TidBITS! It's free and smart. http://www.tidbits.com
>
>
>