MST

星途 面试题库

面试题:Ruby元编程之方法覆盖与动态调度

假设有一个基类`BaseClass`,其中有一个实例方法`base_method`。现在创建一个子类`SubClass`,使用元编程技术在运行时覆盖`base_method`,并且要求新的`base_method`在执行原方法逻辑前后分别打印特定信息,原方法逻辑调用需使用`super`。请编写完整代码实现这一功能。
44.8万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
class BaseClass:
    def base_method(self):
        print("Base method logic")


def new_base_method(self):
    print("Before original method")
    super(SubClass, self).base_method()
    print("After original method")


def metaclass_create_subclass():
    SubClass = type('SubClass', (BaseClass,), {'base_method': new_base_method})
    return SubClass


if __name__ == "__main__":
    SubClass = metaclass_create_subclass()
    sub_obj = SubClass()
    sub_obj.base_method()