Python - 从 main 导入 class function/method 以在另一个文件中使用
Python - Import class function/method from main to use in another file
我有两个文件 - main.py 和 uploadfile.py。 Main.py (GUI) 获取用户输入,并将其提供给 uploadfile.py 进行处理。我在 main 中有一个条目 from uploadfile import Uploader
,允许 main 与 uploadfile 对话。
我需要有错误处理,如果有错误我需要从uploadfile.py调用驻留在main.py的errorfunc
(这是显示一个警告window 有问题的错误)。
main.py
class ErrorHandling (QDialog):
def __init__(self, ErrorObject):
QMessageBox.__init__(self)
def errorfunction(self):
print("error!")
uploadfile.py
class Uploder:
def __init__(self):
def uploadfile(self, item1frommain, item2frommain)
for Files in self.Filestoupload:
try:
self.FileCopy(FilePaths, Metadata)
except Exception as errno:
errorfunction(errno) #<--- placeholder as unsure how to achieve
抱歉,如果此代码不完整,main 和 uploadfile 相对 post 来说相当大。如果我知道我将如何执行此操作(调用 main 中的 class method/function),我将不胜感激。请注意,尝试 from main import ErrorHandling
导致 main 不再 运行 并出现错误 cannot import name Uploader from uploadfile
.
你可以像
那样在构造函数中交出需要的class
class Uploder:
def __init__(self, errorhandler):
self.errorhandler = errorhandler()
def uploadfile(self, item1frommain, item2frommain):
...
self.errorhandler.errorfunction(errno)
并在 main.py
Uploader(ErrorHandling)
备注:Uploader 应该是正确的拼写
在 uploader.py 的顶部添加任何导入语句(main.py)将导致循环导入错误。两种补救方法。
- 将
ErrorHandling
移动到新的 utils.py 模块
- 在
except
子句中写入导入语句
try:
self.FileCopy(FilePaths, Metadata)
except Exception as errno:
from main import ErrorHandling
ErrorHandling(errno)
...
...
我有两个文件 - main.py 和 uploadfile.py。 Main.py (GUI) 获取用户输入,并将其提供给 uploadfile.py 进行处理。我在 main 中有一个条目 from uploadfile import Uploader
,允许 main 与 uploadfile 对话。
我需要有错误处理,如果有错误我需要从uploadfile.py调用驻留在main.py的errorfunc
(这是显示一个警告window 有问题的错误)。
main.py
class ErrorHandling (QDialog):
def __init__(self, ErrorObject):
QMessageBox.__init__(self)
def errorfunction(self):
print("error!")
uploadfile.py
class Uploder:
def __init__(self):
def uploadfile(self, item1frommain, item2frommain)
for Files in self.Filestoupload:
try:
self.FileCopy(FilePaths, Metadata)
except Exception as errno:
errorfunction(errno) #<--- placeholder as unsure how to achieve
抱歉,如果此代码不完整,main 和 uploadfile 相对 post 来说相当大。如果我知道我将如何执行此操作(调用 main 中的 class method/function),我将不胜感激。请注意,尝试 from main import ErrorHandling
导致 main 不再 运行 并出现错误 cannot import name Uploader from uploadfile
.
你可以像
那样在构造函数中交出需要的classclass Uploder:
def __init__(self, errorhandler):
self.errorhandler = errorhandler()
def uploadfile(self, item1frommain, item2frommain):
...
self.errorhandler.errorfunction(errno)
并在 main.py
Uploader(ErrorHandling)
备注:Uploader 应该是正确的拼写
在 uploader.py 的顶部添加任何导入语句(main.py)将导致循环导入错误。两种补救方法。
- 将
ErrorHandling
移动到新的 utils.py 模块 - 在
except
子句中写入导入语句
try:
self.FileCopy(FilePaths, Metadata)
except Exception as errno:
from main import ErrorHandling
ErrorHandling(errno)
...
...