[R] Re: S4 method inheritance

Ross Boylan RossBoylan at stanfordalumni.org
Tue May 24 22:20:50 CEST 2005


On Tue, May 24, 2005 at 06:27:56AM -0700, Robert Gentleman wrote:
> 
> 
> Duncan Murdoch wrote:
> >Ross Boylan wrote:
> >
> >>On Mon, 2005-05-23 at 14:41 -0700, Ross Boylan wrote:
> >>....
> >>
> >>
> >>>Finally, I'm a bit concerned that one article mentioned that S4
> >>>inheritance, in practice, is used mostly for data, not methods (Thomas
> >>>Lumley, R News 4(1), June 2004: p. 36).  Am I going down a road I
> >>>shouldn't travel?
> >>>
> >>
> >>Hmm, maybe I just found out.  If B is an S4 subclass of A (aka extends
> >>A), how does B's method foo invoke A's foo?
> >
> >
> >Your question doesn't make sense in S4.  In S4, classes don't have 
> >methods, generics have methods.  There's no such thing as "B's method" 
> >or "A's method".
> >
> >You might get what you want with foo(as(bObject, "A")) if bObject is an 
> >instance of class B.
> >
> >>The question assumes that A's foo was defined as an in place function,
> >>so there's no (obvious) named object for it, i.e,
> >>setMethod("A", signature(blah="numeric"), function(x) something)
> >
> 
> In general it may be best to think of a generic function as a 
> dispatching mechanism. For S4 methods are associated with a specific 
> generic function. 
"specific" generic is a reference to the ability to define generics
 within the context of a particular package?
> A generic knows about all methods that are associated 
> with it, and about no others. 
Presumably setMethod does the association.  Is the where argument
intended to identify which generic method to pick?  The fact that
there is not a "package" argument to setMethod, as there is to
setGeneric, is a little confusing to me.

> Thus in S4, the little tiff over who owns 
> label goes away - they both do - different packages can define
> generic 
"They" is two different packages?  Or is this a reference to my
original confusion about class vs generic ownership of a method?

> functions for label, or anything else they care to, and users can write 
> methods for specific generic functions and associate them with a 
> generic.
...
>  HTH
>    Robert




More information about the R-help mailing list