如果存在初始化方法,则默认情况下导出的s4类

时间:2018-08-22 10:17:38

标签: r package s4

我认为类需要导出NAMESPACE中的exportClass指令,

但是

如果代码库中有该类的初始化方法,则将导出包中定义但未导出的类。

这就是说,尽管我什么也没导出,但是我可以创建类事件的实例。

如此

setClass("example", slots = c( title = "string"))
setClass("example2", slots = c( title = "string"))

setMethod("initialize","example, function(.Object, title) {
 .Object@title <- title
 . Object
}) 

位于软件包R目录中,并且存在NAMESPACE,但其中没有导出指令,

可以创建该类的实例

library(example_package)
new("example") # ok
new("example2") # fails

我想这是因为initialize是已经定义的泛型

但是这是否意味着如果类具有初始化方法,您就不能阻止包的用户实例化类?

还是将初始化放在setClass指令中?

0 个答案:

没有答案