gpt4 book ai didi

r - 如何调用R6父类中的函数,其中父函数依赖于其他重写的辅助函数

转载 作者:行者123 更新时间:2023-12-05 07:23:27 24 4
gpt4 key购买 nike

我正在尝试在 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() }
)
)

预期的行为是打印“Parent helper”。但是当 child_class 调用父级的 main_fn 时,它使用来自 child_class 的覆盖函数。

child_class <- ChildClass$new()
child_class$main_fn()
# prints "Parent helper."

是否可以避免这种情况?或者这就是重写函数的工作方式?

最佳答案

我可能无法提供解决方案,但看起来是因为父级的 main_fn 调用了 self 上的一个函数 - 并且 R 将其定向到子级的实例中而不是 parent 的。

您可以尝试从父级继承 helper_fn 并以不同的方式命名子级的助手,如 childHelper_fn 如果这对您尝试做的事情有效。

关于r - 如何调用R6父类中的函数,其中父函数依赖于其他重写的辅助函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56032072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com