我正在尝试在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."
有可能避免这种情况吗?还是这只是覆盖功能的工作方式?
i可能无法提供解决方案,但是看起来由于父母的main_fn
调用self
上的函数 - R将其引导到孩子的实例中,而不是父母的实例中。/p>
您可以尝试从父母那里继承helper_fn
,并以childHelper_fn
的方式命名孩子的助手,如果这适用于您想要做的事情。