When I try your code I'm told that 'mongo' is not a defined class. Removing that field from the definition, I do not get a print on definition.
> mongoDbUser = setRefClass("mongoDbUser", + fields = list( + auth = "logical", + host = "character", + username = "character", + password = "character", + db = "character" + ), + methods = list( + initialize = + function(auth,host,username,password,db,connector){ + print("initialization") + } + ) + ) > R.Version()$version.string [1] "R version 2.15.1 Patched (2012-06-22 r59603)" So I guess there's more to the story. In S4-land initialize methods can be tricky (e.g., invoked when an object is coerced between types) and a common pattern is to write a constructor rather than initialize methods MongoDbUser <- function(username, password, auth, host, db, connector) { ## initialize, then mongoDbUser$new(auth, host, username, password, db, connector } this also separates implementation from interface and provides the opportunity to give hints to the user about data types Martin Morgan ----- Original Message ----- > Help anyone? Is this impossible? I tried to use the initFields method > but it did not change anything. > > Le 25/06/2012 10:55, Julien Cochennec a écrit : > > Hi, > > New to this list, and glad I found R5 which si a great improvement > > to > > R for my work. > > Something seems odd anyway, when I do a setRefClass, the initialize > > method execute at the class definition. > > I would like it to execute only when an instance is created. > > How can I do that? I found no way to test if the code execution is > > when the class definition happens or when a $new instance is > > created. > > Thanks for your help. > > For example my class definition looks like this : > > > > mongoDbUser = setRefClass("mongoDbUser", > > fields = list( > > auth = "logical", > > host = "character", > > username = "character", > > password = "character", > > db = "character", > > connector = "mongo" > > ), > > methods = list( > > initialize = > > function(auth,host,username,password,db,connector){ > > print("initialization") > > } > > ) > > ) > > > > If I execute this code, it says "initialization", but it shouldn't, > > I > > created no instance, right?? > > I would like "initialization" to appear only when I do : > > mongoDbUser$new(...) > > > > ______________________________________________ > > R-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.