为什么使用 `attr(x, "class")` 而不是 `class(x)`?

Why using `attr(x, "class")` instead of `class(x)`?

函数model.frame.default运行以下代码; is.null(attr(data, "class"))。我的问题是,为什么在这种情况下使用 attr?使用 is.null(class(data)) 不是更直接吗? (和这里说的不矛盾吗:Why is names(x) better than attr(x, "names")?

这些并不等同。比较 class(1)attr(1, "class") 的输出。后者returns只显式S3类,前者也隐式类.