Reference class inheritance from external package
我正试图重写一个引用类方法。因为引用类方法是绑定到类而不是对象的,所以我相信为了做到这一点,我需要定义一个从旧引用类继承的新引用类。但是,我尝试从中继承的类是在我的外部包(dpylr)中定义的。我找不到正确的语法来完成这项工作,contains似乎只需要一个文本名,而不在外部包中搜索类定义。
特别是,我尝试从dpylr继承dbisobser引用类,并重写finalize方法。
这将正确地找到父类,但由于它来自不同的包,因此无法分配给它。
1 2 3 4 5 6 7 8 9 10 11 | NewDbDisconnector <- setRefClass("NewDbDisconnector", contains = 'DbDisconnector', methods = list( finalize = function() { message("test") } ), where=getNamespace('dplyr') ) # Error in assign(mname, def, where) (from file.r#75) : # cannot add bindings to a locked environment |
只包含接受字符串的方法,不能只从GetRefClass中为它们提供RefClass定义。
1 2 3 4 5 6 7 8 9 10 | NewDbDisconnector <- setRefClass("NewDbDisconnector", contains = getRefClass("DbDisconnector", getNamespace("dplyr")), methods = list( finalize = function() { message("test") } ) ) # Error in FUN(X[[1L]], ...) : # the 'contains' argument should be the names of superclasses: got an element of class"name" |
号
我想这应该是可能的,我就是想不出正确的方法。
可以将超类导入到环境中:
1 | DbDisconnector <- getFromNamespace("DbDisconnector","dplyr") |
然后把EDOCX1[0]放在你的班上。