Python super(Todo,self).__init__() TypeError: super() argument 1 must be type, not classobj
时间: 2024-02-16 09:05:35 浏览: 31
这个错误通常是由于 Python 2 和 Python 3 中 `super()` 函数的使用方式不同导致的。
在 Python 2 中,`super()` 函数需要两个参数:第一个参数是当前类,第二个参数是当前类的实例。而在 Python 3 中,`super()` 函数只需要一个参数,即当前类,因为 Python 3 中可以通过类名自动获取当前实例。
如果你的代码是在 Python 2 中编写的,可以使用以下方式来调用 `super()` 函数:
```python
super(Todo, self).__init__()
```
如果你的代码是在 Python 3 中编写的,可以直接使用以下方式来调用 `super()` 函数:
```python
super().__init__()
```
这样就可以避免出现该错误了。
相关问题
帮我解释这段代码 def clickCanvas(self, event): if self.__isGameStart: point = self.getInnerPoint(Point(event.x, event.y)) # 有效点击坐标 if point.isUserful() and not self.isEmptyInMap(point): if self.__isFirst: self.drawSelectedArea(point) self.__isFirst= False self.__formerPoint = point else: if self.__formerPoint.isEqual(point): self.__isFirst = True self.canvas.delete("rectRedOne") else: linkType = self.getLinkType(self.__formerPoint, point) if linkType['type'] != self.NONE_LINK: # TODO Animation self.ClearLinkedBlocks(self.__formerPoint, point) self.canvas.delete("rectRedOne") self.__isFirst = True if self.isGameEnd(): #通关成功 tk.messagebox.showinfo("You Win!", "Tip") self.__isGameStart = False else: self.__formerPoint = point self.canvas.delete("rectRedOne") self.drawSelectedArea(point)
这段代码是连连看游戏中的一个事件处理函数,当用户在游戏区域的画布上点击时,会触发这个函数。主要实现以下功能:
1. 判断游戏是否已经开始,如果已经开始则继续处理,否则不做任何操作;
2. 获取用户点击的坐标点,判断该点是否在游戏区域内,并且该点对应的方块是否已经被消除;
3. 如果是第一次点击,则绘制一个红色边框,记录下当前点击的坐标点,并将 isFirst 标记为 False;
4. 如果是第二次点击,则判断当前点击的坐标点是否与前一次点击的坐标点相同:
a. 如果相同,则将 isFirst 标记为 True,并删除上一次绘制的红色边框;
b. 如果不同,则判断前一次点击的坐标点和当前点击的坐标点是否可以连通,如果可以连通,则进行连通动画效果,并删除绘制的红色边框,将 isFirst 标记为 True;
5. 如果已经消除了所有方块,则游戏结束,弹出游戏通关成功的提示框,将 isGameStart 标记为 False。
具体的实现细节可以参考注释。总之,这段代码主要是为了处理游戏区域画布的点击事件,实现连连看游戏的核心逻辑。
改写成C++代码: def _reset_cache(self): # TODO: compatibility with shift self._cacheDipole = [[None]*len(self.eigenEs) for _ in range(len(self.eigenEs))] self._cacheLO = [[None]*len(self.eigenEs) for _ in range(len(self.eigenEs))] self.reset_IFR_cache()
以下是将给定的Python代码片段转换为等效的C++代码:
```cpp
void _reset_cache() {
// TODO: compatibility with shift
std::vector<std::vector<SomeType*>> cacheDipole(len(eigenEs), std::vector<SomeType*>(eigenEs.size(), nullptr));
std::vector<std::vector<SomeType*>> cacheLO(len(eigenEs), std::vector<SomeType*>(eigenEs.size(), nullptr));
reset_IFR_cache();
}
```
请注意,这只是一个概念上的转换示例。在实际的代码中,你需要将`SomeType`替换为适当的数据类型,并确保在C++代码中包含所需的头文件和其他变量声明。此外,你还需要根据实际情况实现`reset_IFR_cache()`函数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)