python _new_ _call_ _str_
时间: 2023-05-04 14:03:56 浏览: 157
Python中的_new_,_call_,和_str_是几个重要的内置方法。
首先,_new_方法是一个类方法,它会在创建一个实例时被自动调用。这个方法的主要作用是分配内存空间,最终返回一个新的实例对象。在使用_new_方法时,需要传入类作为第一个参数,并且可以有其他的参数。
其次,_call_方法是另一个特殊的方法,它允许我们像调用函数一样调用实例。更具体地说,_call_方法会在我们调用实例时被自动调用,并且我们可以在其中定义我们所需要的逻辑。在使用_call_方法时,需要将入口点函数定义在这个方法中。
最后,_str_方法是一种用于返回对象的字符串表示的方法。在Python中,我们可以使用print语句打印对象,但如果不使用_str_方法,我们将只会得到对象的内存地址。因此,如果我们需要以某种格式打印对象,我们必须在对象中实现_str_方法。
综上所述,_new_,_call_和_str_都是Python中非常重要的特殊方法,可以让我们更好地控制类的实例化,实例对象的逻辑和打印对象的格式。
相关问题
Got keys from plugin meta data ("ibus") QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforminputcontexts" ... loaded library "/home/rvbust/.local/lib/python3.10/site-packages/PyQt5/Qt5/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so" QFactoryLoader::QFactoryLoader() checking directory path "/home/rvbust/.local/lib/python3.10/site-packages/PyQt5/Qt5/plugins/styles" ... QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/styles" ... Traceback (most recent call last): File "/home/rvbust/Documents/FlexLocation_new/ViewerApp.py", line 30, in <module> main() File "/home/rvbust/Documents/FlexLocation_new/ViewerApp.py", line 24, in main main_window = GlyphViewerApp() File "/home/rvbust/Documents/FlexLocation_new/ViewerApp.py", line 10, in __init__ self.setup() File "/home/rvbust/Documents/FlexLocation_new/ViewerApp.py", line 15, in setup self.ui.setupUi(self) File "/home/rvbust/Documents/FlexLocation_new/glyph_view.py", line 33, in setupUi self.actionLoadCloud = QAction(MainWindow) TypeError: 'PySide6.QtGui.QAction.__init__' called with wrong argument types: PySide6.QtGui.QAction.__init__(GlyphViewerApp) Supported signatures: PySide6.QtGui.QAction.__init__(Union[PySide6.QtGui.QIcon, PySide6.QtGui.QPixmap], str, Optional[PySide6.QtCore.QObject] = None) PySide6.QtGui.QAction.__init__(Optional[PySide6.QtCore.QObject] = None) PySide6.QtGui.QAction.__init__(str, Optional[PySide6.QtCore.QObject] = None) QLibraryPrivate::unload succeeded on "/home/rvbust/.local/lib/python3.10/site-packages/PyQt5/Qt5/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so" QLibraryPrivate::unload succeeded on "/home/rvbust/.local/lib/python3.10/site-packages/PyQt5/Qt5/plugins/platformthemes/libqgtk3.so" QLibraryPrivate::unload succeeded on "/home/rvbust/.local/lib/python3.10/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so" QLibraryPrivate::unload succeeded on "Xcursor" (faked)
这个错误信息出现在实例化 `GlyphViewerApp` 对象时,调用了 `setup` 方法。具体来说,`GlyphViewerApp` 继承自 `QtWidgets.QMainWindow`,而 `setup` 方法中又调用了 `glyph_view.ui` 模块中的 `setupUi` 方法创建了一些 UI 控件,其中包括一个 `QAction` 对象。但是在创建 `QAction` 对象时,传入的参数类型不正确,导致了这个错误。
解决这个问题的方法是,在 `glyph_view.ui` 模块中找到创建 `QAction` 对象的代码,确保参数类型正确。根据错误信息中的提示,`QAction.__init__` 方法支持多种不同的参数类型,需要根据实际情况选择正确的参数类型传入。例如,可以尝试修改为:
```python
self.actionLoadCloud = QAction("Load Cloud", self)
```
这里将第一个参数修改为字符串类型,表示 `QAction` 对象的文本标签。同时,将第二个参数指定为 `self`,表示 `QAction` 对象的父对象为 `GlyphViewerApp` 对象。这样就可以避免参数类型不匹配的错误了。
Traceback (most recent call last): File "C:\Users\Administrator\PycharmProjects\pythonProject4\venv\lib\site-packages\pytesseract\pytesseract.py", line 392, in get_tesseract_version stdin=subprocess.DEVNULL, File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 411, in check_output **kwargs).stdout File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 488, in run with Popen(*popenargs, **kwargs) as process: File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 800, in __init__ restore_signals, start_new_session) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 1207, in _execute_child startupinfo) File "D:\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_monkey.py", line 575, in new_CreateProcess return getattr(_subprocess, original_name)(app_name, patch_arg_str_win(cmd_line), *args) FileNotFoundError: [WinError 2] 系统找不到指定的文件。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1491, in _exec pydev_imports.execfile(file, globals, locals) # execute the script File "D:\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "C:/Users/Administrator/PycharmProjects/pythonProject4/main.py", line 3, in <module> print(pytesseract.get_tesseract_version()) File "C:\Users\Administrator\PycharmProjects\pythonProject4\venv\lib\site-packages\pytesseract\pytesseract.py", line 146, in wrapper wrapper._result = func(*args, **kwargs) File "C:\Users\Administrator\PycharmProjects\pythonProject4\venv\lib\site-packages\pytesseract\pytesseract.py", line 395, in get_tesseract_version raise TesseractNotFoundError() pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information. Process finished with exit code 1该如何处理
根据错误信息,你遇到了一个 `TesseractNotFoundError` 错误,它表示Tesseract OCR引擎未安装或未在系统的PATH环境变量中。
要解决这个问题,你可以尝试以下方法:
1. 安装Tesseract OCR引擎:
下载并安装适合你操作系统的Tesseract OCR引擎。你可以从以下链接获取适用于不同操作系统的安装程序:https://github.com/UB-Mannheim/tesseract/wiki
安装完成后,请确保将Tesseract可执行文件路径添加到系统的PATH环境变量中。这样,Python和pytesseract库才能找到它。
2. 检查Tesseract可执行文件路径:
确保在你的代码中指定了正确的Tesseract可执行文件路径。你可以在代码的开头添加以下行来设置路径:
```python
pytesseract.pytesseract.tesseract_cmd = r'path_to_tesseract_executable'
```
将 `'path_to_tesseract_executable'` 替换为你计算机上Tesseract可执行文件的实际路径。
3. 重启PyCharm:
如果你已经按照上述步骤安装了Tesseract OCR引擎并设置了正确的路径,但仍然遇到问题,请尝试重启PyCharm来确保它能够正确加载新的环境变量。
4. 检查PyCharm配置:
确保你在PyCharm中正确配置了Python解释器,并且所使用的解释器与你安装Tesseract OCR引擎时使用的解释器一致。
可以通过以下步骤检查和更改Python解释器配置:
- 在PyCharm的顶部菜单栏中,选择 "File"(文件)> "Settings"(设置)。
- 在设置窗口中,展开 "Project"(项目)> "Project Interpreter"(项目解释器)。
- 确认所使用的解释器与你安装Tesseract时使用的解释器一致。如果不一致,请选择正确的解释器。
如果你仍然遇到问题,请确保正确安装了Tesseract OCR引擎并配置了正确的路径。如果问题仍然存在,你可以尝试在命令行终端中运行相同的代码,以便更好地了解问题所在。
阅读全文