Как вызвать функцию в родительском классе R6, где родительская функция полагается на другие переопределенные вспомогательные функции - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь создать класс в 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."

Можно ли этого избежать? Или это просто, как работает переопределение функции?

...