R-如何在R6父类中调用函数,其中父函数依赖于其他超级助手函数



我正在尝试在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的方式命名孩子的助手,如果这适用于您想要做的事情。

最新更新