我正在尝试在 R6 中创建一个从其父类继承函数的类。但是,该函数依赖于在子类中覆盖的其他“帮助”函数。
当我调用父函数时,我希望它使用父类中的帮助函数,而不是子类中被覆盖的函数。
这是我的代码如何工作的模型:
ParentClass <- R6Class(
public = list(
helper_fn = function() { print("Parent helper.") },
main_fn = function() { self$helper_fn() }
}
)
)
ChildClass <- R6Class(
inherit = ParentClass,
public = list(
helper_fn = function() { print("Child helper.") },
main_fn = function() { super$main_fn() }
)
)
预期的行为是打印“父助手”。但是当child_class
调用父级的时main_fn
,它使用child_class
.
child_class <- ChildClass$new()
child_class$main_fn()
# prints "Parent helper."
有可能避免这种情况吗?或者这就是重写函数的工作原理?