js中没有关键字accessor,为什么我在webstorm中的以下代码没有检查错误,并给accessor标注了关键字高亮?class FullJustify { static accessor sentences = []; }
时间: 2024-09-10 12:05:36 浏览: 44
JavaScript中并没有内置的"accessor"这个关键字,它实际上是来自一些框架和库(比如ES6的装饰器或者TypeScript的getters和setters)的概念,用于自定义属性访问的行为。WebStorm可能会根据你安装的语言插件或者配置自动识别某些语法特性并提供高亮提示。然而,如果你在纯JavaScript中直接使用`accessor`声明变量,它不会被视为语言的关键字,因此不会引发错误。
在标准JavaScript中,你可能会看到类似这样的get和set方法来模拟accessor模式:
```javascript
class FullJustify {
get sentences() {
// 返回值
}
set sentences(value) {
// 设置值
}
}
```
如果WebStorm未正确识别这部分代码,你可以尝试更新WebStorm的插件或配置,或者明确指定你的项目正在使用的JavaScript版本(如ES6、ES7等)。另外,如果确实想在JS中使用类似accessor的功能,你可能需要查阅对应框架或库的文档。
相关问题
上述代码运行报错,错误为AttributeError: Can only use .cat accessor with a 'category' dtype
这个错误是因为你尝试使用 `.cat` 属性对一个非分类变量进行操作。`.cat` 属性只能用于分类变量,如果你尝试对非分类变量使用该属性,就会出现这个错误。
你需要先将需要转换的列转换为分类变量,方法是使用 `.astype('category')` 函数,例如:
```
training_set['proto'] = training_set['proto'].astype('category')
training_set['state'] = training_set['state'].astype('category')
training_set['srcip'] = training_set['srcip'].astype('category')
training_set['dstip'] = training_set['dstip'].astype('category')
```
然后才可以使用 `.cat` 属性对其进行操作。
运行以上代码后会报错,错误为AttributeError: Can only use .cat accessor with a 'category' dtype
这个错误是因为 `training_set.attack_cat` 列的数据类型不是 `category`。在 Pandas 中,只有将列转换为 `category` 数据类型后,才能使用 `.cat` 属性,所以需要先将 `training_set.attack_cat` 列转换为 `category` 数据类型,然后才能使用 `.cat` 属性。
修改后的代码应该是:
```
training_set['attack_cat'] = training_set['attack_cat'].astype('category')
attacks = training_set.attack_cat.cat.set_categories(["worms"]).dropna().unique()
```
这段代码的作用是将 `training_set` 数据集中的 `attack_cat` 列中的值转换为 `category` 类型,并将其中的值为 `"worms"` 的行提取出来,去除缺失值后得到一个包含唯一值的数组 `attacks`。这个数组中的元素是 `attack_cat` 列中所有值为 `"worms"` 的行的其他列的唯一值。
阅读全文