在自己的 `ggproto` 对象中访问父对象

Access parent within own `ggproto` object

我想在我自己的 ggproto 对象中访问父方法的 compute_group()。这里有两种不同的工作方法,但不知道是否是“正确”的方法:

  1. self$super()$compute_group(...)
  2. ggproto_parent(<parent>, self)$compute_group(...)

有什么(强烈的)意见吗?

我只是在这里建议正确的方法是使用您的第二种方法。一个原因是 ?ggproto 的文档是这样写的:

To explicitly call a methods in a parent, use ggproto_parent(Parent, self).

第二个原因是 ggplot2 源代码从不使用 self$super()$method(),从中您可以推断出它不打算以这种方式使用。

要考虑的第三个选项是直接在您的代码中调用 OtherClass$compute_group()。这应该可行,因为 ggproto 类 被设计为无状态的,所以如果您遵守无状态规则,这应该是安全的。 ggplot2 book 提到这种模式比 ggproto_parent() 方法更普遍,因为它的清晰度和同等的安全性。