Ruby:为每个子类执行代码

Ruby:为每个子类执行代码,ruby,inheritance,metaprogramming,subclass,Ruby,Inheritance,Metaprogramming,Subclass,给定一个父类,有没有办法为加载的每个子类插入代码?即 给定:ParentClass,如何像这样插入代码: class ChildClass < ParentClass execute_function ... end class子类

给定一个父类,有没有办法为加载的每个子类插入代码?即

给定:
ParentClass
,如何像这样插入代码:

class ChildClass < ParentClass
   execute_function

   ...
end
class子类

对于
父类
中的
父类

的所有子类,重写继承的方法

class ParentClass
   def self.inherited(subclass)
      execute_function
      super
   end
   ...
end

请参阅:

如果这些类已加载,该怎么办?这段代码应该做什么?@SergioTulentsev Err,如果一个类的父类没有加载,该如何加载它呢?@meagar:现在已经很晚了,我在问一些愚蠢的问题:)哇。。。花了这么多时间找这个。使用
super(subclass)
安全正确吗?可以,但不是必需的<没有参数的code>super
将使用相同的参数调用父类中同名的方法。Russ Olsen在他的书《雄辩的Ruby》中有一个有趣的使用此钩子的例子。每个子类读取不同类型的文件,并且父类的结构使添加新的子类时不需要对其进行更改。Re super,这当然只在您希望父类的父类也得到通知时才需要。但是,您在这里得到的子类将不完整。例如,如果您在子类中定义了一个类方法或类常量,则该类方法或类常量在此处不可用。@trcarden,如何仅在读取子类后才能执行代码?