前田です。

At Thu, 7 Mar 2002 19:52:32 +0900,
nobu.nakada / nifty.ne.jp wrote:
> class Module
>   alias __extend_object__ extend_object
>   def extend_object(obj)
>     __extend_object__(obj)
>     obj.instance_eval {module_initialize}
>   end
>   alias __append_features__ append_features
>   def append_features(klass)
>     __append_features__(klass)
>     klass.module_eval {alias_method :initialize, :module_initialize}
>   end
> end

これだったら、

module MyMixin
  def self.extend_object(obj)
    super(obj)
    obj.my_mixin_initialize
  end

  def initialize(*args)
    super(*args)
    my_mixin_initialize
  end

  def my_mixin_initialize
    ...
  end
end

でもよい(というか継承を考えるとその方がよいかも)気がします。

石塚さんが問題にされてるのは、継承が絡んだ時に、initializeでsuper
を呼び忘れた場合に困る、ということではないでしょうか。

-- 
前田 修吾